我有一个普通的ASP.NET MVC项目(不是Web API)。在这里,我在我的控制器中创建了一个名为“api”的新文件夹,因为我想创建一个简单的api。
然后我创建了以下类:
public class OfficeProductController : ApiController
{
[HttpPost]
public JsonResult Create(OfficeProductViewModel model)
{
var obj = new OfficeProductViewModel();
return Json(obj);
}
}
这里我遇到两个问题:
如果我没记错的话,这可以在web api项目中使用。
我做错了什么?我需要添加什么?
答案 0 :(得分:5)
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