我有ASP.NET核心应用程序(fka ASP.NET 5,ASP.NET MVC 6)。布局页面包含以下相关链接:
<li><a asp-controller="order">Orders</a></li>
<li><a asp-controller="customer">Customers</a></li>
<li><a asp-controller="whatever">Something Else</a></li>
然后(通过ViewComponent)
<li><a asp-controller="account">Login</a></li>
Login.cshtml具有以下内容:
<form asp-controller="Account" asp-action="Login" method="post" role="form">
...
</form>
或<form action="/Account/Login">...</form>
- 没有任何区别。
问题是,一旦我点击登录并进入登录屏幕,顶级链接(订单,客户等)全部变成&#34; /帐户/登录&#34;!显然,如果我把老式的href
,它们保持不变。但最令人费解的是,如果我明确指定Action -
<li><a asp-controller="order" asp-action="Index">Orders</a></li>
一切正常!这是我偶然发现的一个错误,还是我不明白的设计?
答案 0 :(得分:0)
当Anchor标记助手无法找到指定的路由时,默认为空,因此它可能只是默认为当前页面。
<a asp-controller="SomeUnknownController">Link!</a>
将产生
<a href="">Link!</a>
由于我们不知道您的Account/Login
操作中发生了什么,我们无法确定这是锚TagHelper中的错误。但有些事情正在弄乱某处的路由。