1

ASP.NET Core アプリケーション (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>- 違いはありません。

問題は、[ログイン] をクリックしてログイン画面に入ると、最上位のリンク (注文、顧客など) がすべて「/Account/Login」に変わることです! 明らかに、昔ながらの を入れてもhref、それらは変更されません。しかし、最も不可解な部分は、 Action を明示的に指定すると -

<li><a asp-controller="order" asp-action="Index">Orders</a></li>

すべてが正しく動作します!それは私が見つけたバグですか、それとも私が理解できない設計によるものですか?

4

1 に答える 1

0

指定されたルートが見つからない場合、アンカー タグ ヘルパーはデフォルトで空に設定されるため、現在のページにデフォルト設定されている可能性があります。

<a asp-controller="SomeUnknownController">Link!</a>

生産します

<a href="">Link!</a>

あなたのアクションで何が起こっているのか分からないので、Account/Loginこれがアンカー TagHelper のバグであると断言することはできません。しかし、何かがどこかでルーティングを台無しにしています。

于 2016-03-01T21:24:47.977 に答える