.NET Core 2.2中Html.ActionLink跳转登录页异常问题求助
解决.NET Core 2.2迁移中@Html.ActionLink跳转Login页面失效的问题
看起来你遇到的问题核心是**@Html.ActionLink的参数使用错误**,导致生成的URL不符合Identity的路由规则,所以点击后无法正确跳转。咱们一步步来拆解:
问题根源分析
先看你写的两个Login链接:
- 第一个Login链接:
@Html.ActionLink("Login", "/Account/Login", "Identity", null, new { @style = "color:white" })
这里你把第二个参数(actionName)写成了完整路径/Account/Login,但@Html.ActionLink的第二个参数应该是控制器里的Action方法名,不是完整URL。
- 第二个Login链接:
@Html.ActionLink("Login", "Account", "Identity", null, new { @style = "color:white" })
这里直接搞反了actionName和controllerName参数,把控制器名写到了Action的位置,自然生成不了正确的路由。
另外,.NET Core默认的Identity UI是放在Identity区域下的,所以需要明确指定区域参数才能匹配到正确的路由。
正确的写法
把两个Login链接替换成下面的代码:
<li class="nav-item" id="Login"> @Html.ActionLink("Login", "Login", "Account", new { area = "Identity" }, new { @style = "color:white" }) </li>
这里的参数对应@Html.ActionLink的正确重载:
- 第1个参数:链接显示文本("Login")
- 第2个参数:Action方法名("Login")
- 第3个参数:控制器名("Account")
- 第4个参数:路由值(指定
area = "Identity",匹配Identity区域的路由) - 第5个参数:HTML属性(样式设置)
验证方法
你可以右键页面查看源码,对比修改前后的href属性:
- 修改前错误的链接生成的
href肯定是不符合预期的(比如指向当前页面的URL) - 修改后应该生成类似
/Identity/Account/Login的正确路径
这样点击链接就能正常跳转到登录页了,和你手动输入URL的效果一致。
内容的提问来源于stack exchange,提问作者Korpin
相关产品推荐
相关产品推荐

