私はこれを持っています:
<li><a href="/Users/Index)" class="elements"><span>Clients</span></a></li>
それはうまくいきます。しかし、すでにこのページまたはコントローラーにいる場合は、 /Users/Details
そしてこのリンクをクリックすると、/Users/Index
にリダイレクトされます。
サイト上の現在の位置に関係なく、href
で正しいパスを取得するにはどうすればよいですか?
これを実現する方法はいくつかあります。次のことができます。
<li>
@Html.ActionLink("Clients", "Index", "User", new { @class = "elements" }, null)
</li>
またはこれ:
<li>
<a href="@Url.Action("Index", "Users")" class="elements">
<span>Clients</span>
</a>
</li>
最近、私は次のことをしています:
<a href="@Url.Action("Index", null, new { area = string.Empty, controller = "User" }, Request.Url.Scheme)">
<span>Clients</span>
</a>
結果には、次のようなURL構造に追加されるhttp://localhost/10000
(または使用しているポート)が含まれます。
http://localhost:10000/Users
これがお役に立てば幸いです。
どう?
<li>
<a href="@Url.Action("Index", "Users")" class="elements"><span>Clients</span></a>
</li>
次のように変更できます
<li><a href="./Index" class="elements"><span>Clients</span></a></li>
余分なドットは、同じコントローラーにいることを意味します。コントローラを別のコントローラに変更したい場合は、これを書くことができます
<li><a href="../newController/Index" class="elements"><span>Clients</span></a></li>
ここで「〜」はルートディレクトリを指します。ここで、Homeはコントローラーで、Download_Excel_Fileはactionmethodです。
<a href="~/Home/Download_Excel_File" />
以下を試してください:
<a asp-controller="Users" asp-action="Index"></a>
(ASP.NET 5およびMVC 6で有効)
この非常に簡略化された形式を使用することもできます。
@Html.ActionLink("Come back to Home", "Index", "Home")
どこでCome back to Home
は、ページに表示されるテキストですIndex
はビュー名ですHome
はコントローラー名です
ASP.NET Coreを使用している場合、受け入れられる回答を次のように調整できます。
<a href="@Url.Action("Index", null, new { area = string.Empty, controller = "User" }, @Context.Request.Scheme)">
<span>Clients</span>
</a>
@Request.Url.Scheme
を@Context.Request.Scheme
に置き換える