web-dev-qa-db-ja.com

ASP MVC hrefからコントローラー/ビューへ

私はこれを持っています:

<li><a href="/Users/Index)" class="elements"><span>Clients</span></a></li>

それはうまくいきます。しかし、すでにこのページまたはコントローラーにいる場合は、 /Users/Detailsそしてこのリンクをクリックすると、/Users/Indexにリダイレクトされます。

サイト上の現在の位置に関係なく、hrefで正しいパスを取得するにはどうすればよいですか?

78
Zapnologica

これを実現する方法はいくつかあります。次のことができます。

<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

これがお役に立てば幸いです。

156
Brendan Vogt

どう?

<li>
<a href="@Url.Action("Index", "Users")" class="elements"><span>Clients</span></a>
</li>
15
FosterZ

次のように変更できます

<li><a href="./Index" class="elements"><span>Clients</span></a></li>

余分なドットは、同じコントローラーにいることを意味します。コントローラを別のコントローラに変更したい場合は、これを書くことができます

<li><a href="../newController/Index" class="elements"><span>Clients</span></a></li>
5
rksajib

ここで「〜」はルートディレクトリを指します。ここで、Homeはコントローラーで、Download_Excel_Fileはactionmethodです。

 <a href="~/Home/Download_Excel_File" />
5
faux

以下を試してください:

<a asp-controller="Users" asp-action="Index"></a>

(ASP.NET 5およびMVC 6で有効)

4
John Schroeder

この非常に簡略化された形式を使用することもできます。

@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に置き換える

0
Neil Schurrer