.net核心没有路由到POST方法

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

Nko*_*osi 6

如果打算使用属性路由,则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与目标操作的参数匹配