MVCプロジェクト内のApicontroller - HTTPPOSTとJSONメソッドは認識されません
-
24-12-2019 - |
質問
私は通常のASP.NET MVCプロジェクト(Web APIではなく)を持っています。ここでは、簡単なAPIを作成したいのと同じように、コントローラの中に「API」という新しいフォルダを作成しました。
次のクラスを作成します。
public class OfficeProductController : ApiController
{
[HttpPost]
public JsonResult Create(OfficeProductViewModel model)
{
var obj = new OfficeProductViewModel();
return Json(obj);
}
}
.
ここに2つの問題があります:
- httppost:「あいまいな参照」(http.httppostttributeとmvc.httppostttribute)
- json()は認識されません。それは単に「シンボルJSONを解決できない」 を私に与えます
正しく覚えていれば、これはWeb APIプロジェクトで機能します。
私は何をしていますか?追加する必要があるもの?
解決
LARS、2番目の質問=> JSONRESULTの代わりにofficeProductViewModelを返すことができます。 JSONResultはWebAPIでは使用されていないActionResultです。
jsonResultは、ApicontrollerがSystem.Web.HTTP(Web API Stuff)にあるSystem.Web.MVCネームスペースにあります。
最初の質問=> ApicontrollerでSystem.Web.mvcを参照していないことを確認してください.System.Web.HTTPだけです。両方のネームスペースにHTTPPostオブジェクトがあり、MVCバージョンを使用したくない
XMLではなくApicontrollersのデフォルトの戻り値としてJSONを設定する;
のようなWebApiConfigクラスでこれをオーバーライドできます。var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
.
Scott Hanselmanはこれについても素敵な記事を持っています。 >> http://www.hanselman.com/blog/oneaspnetmakingjsonwebapiswithaspneaspnetmvc4betaandaspnetwebapi.aspx
所属していません StackOverflow