Apicontroller Внутри MVC Project - HTTPPOST и JSON Метод не распознан
-
24-12-2019 - |
Вопрос
У меня есть нормальный проект ASP.NET MVC (не веб-API).Здесь я создал новую папку внутри моих контроллеров под названием «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»
Если я помню правильно, это будет работать в проекте веб-API.
Что я делаю не так?Что-то мне нужно добавить?
Решение
Ларс, второй вопрос=> Вы можете просто вернуть OfficeProductViewModel вместо JsonResult. JSonResult - это действие, не используемое в webapi.
jsonresult находится в пространстве имен System.Web.mvc, где Apicontroller находится в System.Web.http (Веб-API).
Первый вопрос=> Убедитесь, что вы не ссылаетесь на систему .Web.mvc в вашем Apicontroller, просто 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);
.
Скотт Хансельман имеет приятную статью об этом; http://www.hanselman.com/blog/oreaspnetmakingjsonwebapiswithAspnetmvc4betaandaspnetwebapi.aspx