Domanda

Ho un normale progetto ASP.NET MVC (non API Web).Qui ho creato una nuova cartella all'interno dei miei controller chiamata "API", come voglio creare una semplice API.

Quindi crei la seguente classe:

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

Qui ottengo due problemi:

    .
  • httpPost: Risultati in "Riferimento ambiguo" (tra http.httpposttribute e mvc.httpposttribute)
  • json () non è riconosciuto.Mi dà semplicemente un "non è possibile risolvere il simbolo JSON"

Se ricordo correttamente, questo funzionerebbe in un progetto API Web.

Cosa sto facendo male?Qualcosa che devo aggiungere?

È stato utile?

Soluzione

Lars, seconda domanda=> Puoi semplicemente restituire OfficeProductViewModel invece di JSONResult. JSSSRESULT è un actionResult, non utilizzato in WebAPI.

JSONRESULT è nello spazio dei nomi System.Web.MVC dove Apicontroller è nel sistema.Web.HTTP (Stuff API Web).

Prima domanda=> Assicurati di non essere referenziando System.Web.MVC nel tuo Apicontroller, System.Web.http.Esiste un oggetto httpPost in entrambi i nomi spazi, non si desidera utilizzare la versione MVC.

Per impostare JSON come tipo di ritorno predefinito su Apicontrollers anziché XML è possibile sovrascrivere questo in Youbapiconfig la classe come SO;

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

Scott Hanselman ha anche un bell'articolo su questo; http://www.hanselman.com/blog/seaspnetmakingjsonwebpispnetmaspnetmvc4betaandespnetwebapi.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top