cru*_*dev 5 c# http-post asp.net-mvc-routing asp.net-core-mvc
链接到项目 - > https://github.com/crumdev/hqbbq.git
我有一个简单的3页MVC网站,有1个控制器.对于联系页面,我有一个小的3输入表单.以下是Controller方法:
[Route("contact/")]
public IActionResult Contact()
{
return View();
}
[HttpPost]
public IActionResult Contact(string name, string email, string message)
{
ViewBag.Name = name;
ViewBag.Email = email;
ViewBag.Message = message;
return View();
}
Run Code Online (Sandbox Code Playgroud)
当我在HttpPost的Contact方法中提交带有断点的表单时,它永远不会中断,而是使用常规方法并再次返回视图.我已经尝试将我的表单简化为name字段,只捕获它并且它不会进入POST方法.我给了常规的Contact方法[HttpGet]属性,所以它只能严格用于GET请求,当我提交表单时,它会完全绕过我的控制器并返回除了"Hello World!"之外的空白的异常页面.屏幕上.我已经阅读了文档,并在teamtreehouse.com上阅读了常规ASP.Net的教程,但是无法理解为什么它会以这种方式运行.
编辑:这是提交POST的页面的代码.我只是使用一个纯HTML表单和POST方法来提交数据.
https://github.com/crumdev/hqbbq/blob/master/HQ-BBQ/Views/Home/contact.cshtml
如果打算使用属性路由,则POST操作也需要具有路由.
[HttpGet]
[Route("contact")]
public IActionResult Contact() {
return View();
}
[HttpPost]
[Route("contact")]
public IActionResult Contact(string name, string email, string message) {
ViewBag.Name = name;
ViewBag.Email = email;
ViewBag.Message = message;
return View();
}
Run Code Online (Sandbox Code Playgroud)
请注意,不需要删除斜杠.确保表单输入的名称和ID与目标操作的参数匹配