ASP.NET Core MVC:如何添加指向其他文件夹视图的链接
解决ASP.NET Core MVC跨控制器视图链接问题
你的问题出在误用了Razor Pages的标签助手——asp-page是给Razor Pages项目用的,而你的项目是MVC架构,应该用MVC专属的asp-controller和asp-action标签助手来生成跨控制器的链接。
修正后的链接代码
把原来的asp-page替换成asp-controller和asp-action,同时保留asp-route-id传递参数:
<td> <a asp-controller="Salaries" asp-action="Index" asp-route-id="@item.Id">View Salary Components</a> | <a asp-action="Edit" asp-route-id="@item.Id">Edit</a> | <a asp-action="Details" asp-route-id="@item.Id">Details</a> | <a asp-action="Delete" asp-route-id="@item.Id">Delete</a> </td>
关键说明
- 控制器匹配:
asp-controller="Salaries"指定要跳转的目标控制器为SalariesController,MVC会自动对应到Views下的Salaries文件夹视图。 - 动作方法匹配:
asp-action="Index"指定调用该控制器下的Index动作方法,确保你的SalariesController里有接收id参数的Index方法,示例如下:
public IActionResult Index(int id) { // 根据id获取薪资组件逻辑 return View(); }
- 路由兼容性:你的默认路由
{controller=Home}/{action=Index}/{id?}完全支持这种链接格式,生成的URL会是/Salaries/Index/[item.Id],符合路由规则。
排查要点
如果点击后还是没反应,检查:
SalariesController是否存在,且Index方法的参数名称是id(要和asp-route-id的名称一致)- 浏览器控制台是否有JS报错,或者右键查看链接地址确认是否生成了有效URL
内容的提问来源于stack exchange,提问作者Daneesha
相关产品推荐
相关产品推荐

