Asp.net mvc 澄清ASP.NET MVC路由和模型绑定
在ASP.NET MVC中,我最近发现: 这不起作用,并导致HTTP 404Asp.net mvc 澄清ASP.NET MVC路由和模型绑定,asp.net-mvc,asp.net-mvc-routing,model-binding,Asp.net Mvc,Asp.net Mvc Routing,Model Binding,在ASP.NET MVC中,我最近发现: 这不起作用,并导致HTTP 404 public class TestController : Controller { [HttpGet] [HttpPost] public ActionResult Index(TestModel model) { return View(model); } } 这个很好用 public class TestController : Controller {
public class TestController : Controller
{
[HttpGet]
[HttpPost]
public ActionResult Index(TestModel model)
{
return View(model);
}
}
这个很好用
public class TestController : Controller
{
public ActionResult Index(TestModel model)
{
return View(model);
}
}
这也很好:
public class TestController : Controller
{
[HttpGet]
[ActionName("Index")]
public ActionResult GetIndex(TestModel model)
{
return View("Index", model);
}
[HttpPost]
[ActionName("Index")]
public ActionResult PostIndex(TestModel model)
{
return View("Index", model);
}
}
我想解释一下为什么第一个版本不起作用,而另外两个版本起作用。如果有人能告诉我如何修改第一个版本使其生效,我也将不胜感激。我喜欢第一个版本,因为它更简洁(1个方法而不是2个),并且还过滤掉了不必要的HTTP方法。HTTP动词属性是互斥的,请求不能同时进行GET和POST。相反,您必须这样做:
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public ActionResult Index(TestModel model) { ... }
我还不能接受你的回答。我会在大约5分钟后将其标记为已接受:)谢谢!可能的重复似乎是同一个问题,尽管措辞不同。我还问了为什么显而易见的选择不起作用。