Pergunta

Eu tenho um projeto ASP.NET MVC normal (não API da Web).Aqui criei uma nova pasta dentro dos meus controladores chamada "api", pois quero criar uma api simples.

Eu então crio a seguinte classe:

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

Aqui eu tenho dois problemas:

  • httpPostagem:resulta em "referência ambígua" (entre Http.HttpPostAttribute e Mvc.HttpPostAttribute)
  • Json() não é reconhecido.Isso simplesmente me dá um "não é possível resolver o símbolo Json"

Se bem me lembro, isso funcionaria em um projeto de API da web.

O que estou fazendo de errado?Algo que preciso adicionar?

Foi útil?

Solução

Lars, Segunda pergunta => você pode simplesmente retornar OfficeProductViewModel em vez de JsonResult.JsonResult é um ActionResult, não usado em WebApi.

JsonResult está no namespace System.Web.MVC, onde ApiController está no System.Web.Http (coisas da Web Api).

Primeira pergunta => Certifique-se de não estar referenciando System.Web.MVC em seu APIController, apenas System.Web.Http.Há um objeto HttpPost em ambos os namespaces, você não deseja usar a versão MVC.

Para definir Json como o tipo de retorno padrão em ApiControllers em vez de xml, você pode substituir isso em sua classe WebApiConfig assim;

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

Scott Hanselman também tem um bom artigo sobre isso;http://www.hanselman.com/blog/OneASPNETMakingJSONWebAPIsWithASPNETMVC4BetaAndASPNETWebAPI.aspx

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top