为什么Asp.Net Core Razor页面点击提交按钮时HttpPost方法不触发
你当前的问题核心是表单未指定提交到的目标Action地址,默认会提交到当前页面加载时对应的路由(也就是你访问Index页面的路由),所以触发了Index方法而非SaveDocument方法。
修正方案
方案1:使用ASP.NET Core内置的Tag Helper指定提交目标
首先确认你的Views/_ViewImports.cshtml文件中已经引入了Tag Helper:@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers然后修改Razor中的form标签,添加
asp-action属性指定提交到SaveDocument方法:<form method="post" asp-action="SaveDocument">如果提交目标不在当前控制器,还可以补充
asp-controller="Sample"属性。方案2:直接手动指定action路径
不需要Tag Helper的话,直接写全action地址即可:<form method="post" action="/Sample/SaveDocument">
额外排查点
如果修改后仍未生效,检查以下两项:
- 你的Partial视图中是否存在嵌套的
<form>标签,嵌套表单会导致外层表单提交逻辑失效 - 控制器的路由配置是否有自定义规则拦截了
/Sample/SaveDocument的路由匹配
内容的提问来源于stack exchange,提问作者JohnB
相关产品推荐
相关产品推荐

