Pregunta

Tengo un proyecto Normal ASP.NET MVC (no API web).Aquí creé una nueva carpeta dentro de mis controladores llamados "API", ya que quiero crear una API simple.

Entonces creo la siguiente clase:

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

Aquí obtengo dos problemas:

  • httppost: resultados en "referencia ambigua" (entre el http.httppostattribute y el mvc.httppostattribute)
  • JSON () no se reconoce.Simplemente me da un "No se puede resolver el símbolo JSON"

Si recuerdo correctamente, esto funcionaría en un proyecto de API web.

¿Qué estoy haciendo mal?Algo que necesito agregar?

¿Fue útil?

Solución

lars, segunda pregunta=> Puede simplemente devolver OfficeProductViewmodel en lugar de JSONRESULT. JSONRESULT es un recurso, no se usa en WEBAPI.

JSONRESULT está en el espacio de nombres del sistema.web.mvc donde se encuentra el apicontroller en el sistema.web.http (tela de la API web).

Primera pregunta=> Asegúrese de que no está haciendo referencia a System.Web.MVC en su Apicontroller, solo SYSTEM.WEB.HTTP.Hay un objeto HTTPPOST en ambos espacios de nombres, no desea utilizar la versión MVC.

Para establecer JSON como el tipo de devolución predeterminado en Apicontrollers en lugar de XML, puede anular esto en su clase WebAPICONFIG como SO;

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

Scott Hanselman tiene un buen artículo sobre esto también; http://www.hanselman.com/blog/oneaspnetmakingjsonwebapiswithaspnetmvc4betaandaspnetwebapi.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top