.NET Core MVC视图指定asp-controller未生效问题如何解决
问题原因
你在给asp-controller属性赋值时多带了Controller后缀,这是ASP.NET Core MVC Tag Helper使用时的常见误区。框架解析asp-controller属性时,会自动为输入的值拼接Controller后缀去匹配控制器类,你填写DealController的情况下,框架实际会尝试查找名为DealControllerController的控制器,匹配失败后就会 fallback 到当前视图所属的UserController,所以出现了你描述的现象。
解决方法
直接把asp-controller属性的值改成不带后缀的控制器名即可,修改后的表单代码如下:
<form asp-route-empname="@deal.Id" asp-controller="Deal" asp-action="DeleteDeal" method="post"> <button type="submit">Delete</button> </form>
其余排查点
如果修改后缀后问题仍然存在,可以按以下顺序排查:
- 确认
DealController下的DeleteDeal方法添加了[HttpPost]特性,和表单提交方式匹配 - 如果你使用了区域(Area)功能,需要在表单上补充
asp-area属性指定对应区域,否则会默认匹配根层级的控制器 - 右键浏览器页面查看生成的表单
action属性值,确认生成的路径是否符合预期,可以快速区分是前端Tag Helper渲染问题还是后端路由规则问题
内容的提问来源于stack exchange,提问作者Maksims
相关产品推荐
相关产品推荐

