gpt4 book ai didi

asp.net-mvc - mvc 项目中的 Apicontroller - 无法识别 httppost 和 json 方法

转载 作者:行者123 更新时间:2023-12-01 11:40:07 24 4
gpt4 key购买 nike

我有一个普通的 ASP.NET MVC 项目(不是 Web API)。在这里,我在我的 Controller 中创建了一个名为“api”的新文件夹,因为我想创建一个简单的 api。

然后我创建以下类:

public class OfficeProductController : ApiController
{
[HttpPost]
public JsonResult Create(OfficeProductViewModel model)
{
var obj = new OfficeProductViewModel();
return Json(obj);
}
}

这里我遇到了两个问题:

  • HttpPost:导致“引用不明确”(在 Http.HttpPostAttribute 和 Mvc.HttpPostAttribute 之间)
  • 无法识别 Json()。它只是给了我一个“无法解析符号 Json”

如果我没记错的话,这将适用于 web api 项目。

我做错了什么?我需要补充什么吗?

最佳答案

Lars,第二个问题 => 您可以只返回 OfficeProductViewModel 而不是 JsonResult。JsonResult 是一个 ActionResult,在 WebApi 中没有使用。

JsonResult 在 System.Web.MVC 命名空间中,而 ApiController 在 System.Web.Http(Web Api 的东西)中。

第一个问题 => 确保您没有在 APIController 中引用 System.Web.MVC,而只是引用 System.Web.Http。两个命名空间中都有一个 HttpPost 对象,您不想使用 MVC 版本。

要将 Json 设置为 ApiControllers 上的默认返回类型而不是 xml,您可以像这样在 WebApiConfig 类中覆盖它;

var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);

Scott Hanselman 在这方面也有一篇不错的文章; http://www.hanselman.com/blog/OneASPNETMakingJSONWebAPIsWithASPNETMVC4BetaAndASPNETWebAPI.aspx

关于asp.net-mvc - mvc 项目中的 Apicontroller - 无法识别 httppost 和 json 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22081204/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com