Question

J'ai un projet normal ASP.NET MVC (non de l'API Web).Ici, j'ai créé un nouveau dossier dans mes contrôleurs appelé "API", car je souhaite créer une API simple.

Je crée ensuite la classe suivante:

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

Ici, je reçois deux problèmes:

  • httppost: Résultats dans "Référence ambigu" (entre le http.httppostattribute et le mvc.httppostattribute)
  • JSON () n'est pas reconnu.Cela me donne simplement un "Impossible de résoudre le symbole JSON"

Si je me souviens bien, cela fonctionnerait dans un projet d'API Web.

Qu'est-ce que je fais mal?Quelque chose que j'ai besoin d'ajouter?

Était-ce utile?

La solution

Lars, deuxième question=> Vous pouvez simplement retourner OfficeProDuctViewModel au lieu de JSONRESULT. JSONRESULT est une actionResulte, non utilisée dans WebAPI.

JSONRESULT est dans l'espace de noms System.Web.mvc où Apicontroller est dans le système.Web.http (Stuff Web Web).

première question=> Assurez-vous de ne pas référencer System.Web.MVC dans votre Apicontroller, juste System.web.http.Il existe un objet httpPost dans les deux espaces de noms, vous ne souhaitez pas utiliser la version MVC.

Pour définir JSON comme type de retour par défaut sur les apicontrôleurs au lieu de XML, vous pouvez le remplacer dans votre classe Webapiconfig similaire à celle-ci;

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

Scott Hanselman a un bel article sur cela aussi; http://www.haselman.com/blog/oneaspnetmakingjsonwebapiswitasnetwebapi.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top