跨文件夹访问页面:Asp.Net MVC中ActionLink跳转异常问题
解决Html.ActionLink跳转路径错误的问题
嘿,我来帮你搞定这个跳转问题!你遇到的问题核心是调用Html.ActionLink时参数顺序搞错了,导致路由系统解析出了错误的路径。
问题根源
你之前写的代码:
@Html.ActionLink("Edit", "Researchers","Edit", new { id = item.ResearcherID })
这个调用匹配的是ASP.NET MVC中一个不太常用的重载:ActionLink(string linkText, string actionName, object routeValues, object htmlAttributes)。这里的"Researchers"被当成了动作名,"Edit"被当成了路由参数的一部分,再加上默认控制器是Home,就出现了你看到的奇怪路径http://localhost:12345/Home/%20Researchers?Length=4。
正确的写法
你需要使用带控制器名的正确重载,有两种可靠的方式:
方式1:严格遵循参数顺序
确保参数顺序是:链接文本 → 动作名 → 控制器名 → 路由参数 → HTML属性,最后一个null是用来占位HTML属性的(如果不需要HTML属性的话):
@Html.ActionLink("Edit", "Edit", "Researchers", new { id = item.ResearcherID }, null)
方式2:使用命名参数(更清晰,不易出错)
直接给每个参数指定名称,完全不用记顺序,可读性也更强:
@Html.ActionLink( linkText: "Edit", actionName: "Edit", controllerName: "Researchers", routeValues: new { id = item.ResearcherID }, htmlAttributes: null )
效果验证
用上面两种写法,点击链接后都会正确跳转到http://localhost:12345/Researchers/Edit/{你的id值}路径,完美匹配你的目标页面位置。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

