POST 経由で次の JSON を送信しています。
POST http://localhost:52873/news
{"text":"testing","isPublic":true}
私のコントローラー:
public class NewsController : Controller
{
// GET: /<controller>/
[HttpGet]
public IActionResult Index()
{
return View();
}
[HttpPost]
public IActionResult Post(CreatePostCommand command)
{
/* ...more code... */
return new HttpStatusCodeResult(200);
}
}
コマンドは次のとおりです。
public class CreatePostCommand
{
public string Text { get; set; }
public bool IsPublic { get; set; }
}
私のルート設定は、VS 2014 CTP 4 の MVC テンプレートに付属するデフォルトです。
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "Home", action = "Index" });
routes.MapRoute(
name: "api",
template: "{controller}/{id?}");
});
ASP.NET MVC 6 の概要からの引用:
このルート テンプレートを使用すると、アクション名が要求の HTTP 動詞にマップされます。たとえば、GET 要求は Get という名前のメソッドを呼び出し、PUT 要求は Put という名前のメソッドを呼び出します。{controller} 変数は引き続きコントローラー名にマップされます。
これは私にはうまくいかないようです。404 エラーが発生します。この新しい ModelBinder には何が欠けていますか? JSON POST メッセージをバインドしないのはなぜですか?