如何使用asp-action跳转视图且不触发HttpPost方法?
解决ASP.NET Core中asp-action跳转时避免触发HttpPost的问题
方法1:修改表单的请求方式为GET
默认情况下,ASP.NET Core的form标签配合asp-action生成的表单会使用POST请求,所以点击提交按钮会触发对应Action的HttpPost方法。只需给表单添加method="get"属性,就能让请求变为GET,直接跳转至目标视图:
<form asp-action="你的目标Action名" asp-controller="你的目标Controller名" method="get"> <button type="submit" class="btn-link dropdown-item"> <i class="mdi mdi-xxx font-size-16 align-middle me-1"></i> 跳转至目标页面 </button> </form>
这样点击按钮后,会发起GET请求调用对应Action的HttpGet方法,返回包含表单的视图,不会触发POST逻辑。
方法2:用<a>标签替代表单+按钮
既然你的需求是跳转导航,用<a>标签其实更符合语义,同时也能继续使用asp-action生成正确的路由链接,样式上可以通过类名调整成和按钮一致的效果:
<a asp-action="你的目标Action名" asp-controller="你的目标Controller名" class="btn-link dropdown-item text-decoration-none"> <i class="mdi mdi-xxx font-size-16 align-middle me-1"></i> 跳转至目标页面 </a>
<a>标签默认就是GET请求,点击后直接导航到目标视图,完全不会触发POST方法,比用表单更简洁。
为什么改button类型为button没用?
当你把按钮类型改成button时,它默认不会触发表单的提交事件,所以点击后自然没有任何响应。如果一定要用这种方式,你得手动加JS来处理导航,但完全没必要,上面两种方法更直接。
内容的提问来源于stack exchange,提问作者Demian
相关产品推荐
相关产品推荐

