web-dev-qa-db-ja.com

エリア外のASP.NETMVCActionLink

MVCでの単純なタスクは、難しい課題になることがあります。

さて、私は管理者と呼ばれるエリアを持っています。この領域のSharedのディレクトリ内に「Forbidden」という名前のページがあります。

目標は単純です。ホームページに戻るためのリンクを生成するHtml.ActionLinkを作成する必要があります。これは[〜#〜] outside [〜#〜]管理領域です。

だから私は試してみます、<%= Html.ActionLink("Back","Index",new {controller="Home"})%>、そしてその生成:

http://localhost/Admin/Home/Index

それは間違っています!

http://localhost/Home/Index

エリアからデフォルトのコントローラー構造へのリンクを作成するにはどうすればよいですか?

30
ozsenegal

これを試して :

<%= Html.ActionLink("Back", "Index", "Home", new { area = "" }, null) %> 

Areasを使用する場合は、上記のようにルート値を追加して、ActionLinksで呼び出すエリアを常に指定する必要があります。リンクがエリア外にある場合(あなたの場合のように)、エリアに空のパラメーターを使用します。


ASP.NET MVCプロジェクト(T4MVC)に不可欠な素晴らしい拡張機能があります。これにより、ActionLinkがよりきれいに見え、エラーから保護されます。

したがって、上記のコードは次のようになります。

<%= Html.ActionLink("Back", MVC.Home.Index()) %>

エリアを使用する場合:

<%= Html.ActionLink("Some Link", MVC.Admin.SomeController.SomeAction()) %>

これは、codeplexのMvcContribプロジェクトの一部です ここ

あなたはそれを使うことを考えるべきです。

53
Manaf Abu.Rous