回答:
理解した..
Html.ActionLink("Link Text", "ActionName", "ControllerName", new { Area = "AreaName" }, new{})
この直後に遭遇した何か、他の人が遭遇する可能性があると思います:エリア内からエリア外のアクションにリンクする必要がある場合でも、エリアを空の文字列として指定する必要があります。
たとえば、一部のMVCコードを領域に移動したところ、サイトの他のページを参照するマスターページのURLを更新する必要があることがわかりました。
エリアにないものへのURLを指定するには、
Html.ActionLink("home", "Index", new { area = "", controller = "Home" })
使用する:
Html.ActionLink("Text", "ActionName", "ControllerName", new { Area = "AreaName" }, null)
注:4番目のパラメータはrouteを渡すValues
ことです。空のパラメータを渡すとルート構造と見なされ、適切な値を渡すとそれを領域として使用します。
また、使用することを忘れないでくださいnull
またはnew{}
渡すために第五パラメータとして、null
またはnew {}
アクションリンクを作成しばらくメソッドをオーバーロードしないであろう(text,action,controller,route data)
か、その(text,action,controller,route data,html attribute)
ように適切なメソッドを使用します
これは、ユーザーが事前に構築された認証システムにリンクできるようにするためのソリューションとして私が思いついたものです。
私の各エリアには、_LoginPartial.cshtmlファイルのバージョンがあります。
おそらく、アプリケーションでファイルの単一バージョンを使用することはできますが、単一ログインパーシャルを使用しようとすると、エラーが発生し続けました。
元の生成されたloginpartialにわずかな変更を加えただけですが、特定の領域で使用するとうまく機能するようです。
これらすべてで使用されるコードは次のとおりです。
@if (Request.IsAuthenticated)
{
<text>
Hello, @Html.ActionLink(User.Identity.Name, "Manage", "Account", new { area = "" }, htmlAttributes: new { @class = "username", title = "Manage" })!
@using (Html.BeginForm("LogOff", "Account", new { area = "" }, FormMethod.Post, new { id = "logoutForm" }))
{
@Html.AntiForgeryToken()
<a href="javascript:document.getElementById('logoutForm').submit()">Log off</a>
}
</text>
}
else
{
<ul>
<li>@Html.ActionLink("Register", "Register", "Account", new { area = "" }, htmlAttributes: new { id = "registerLink" })</li>
<li>@Html.ActionLink("Log in", "Login", "Account", new { area = "" }, htmlAttributes: new { id = "loginLink" })</li>
</ul>
}
htmlAttributes:
複数のパラメーターを使用する場合に非常に効果的です。
地域から、About、Home、Contacなどの標準のWebアプリケーションリンクを使用できない場合。あなたは行を変える
@Html.ActionLink("Ana Sayfa", "Index", "Home", new { area = "" }, new {})
から
Views \ Shared_Layout.cshtml
使用する
@Html.ActionLink("DisplayText", "ActionName", "ControllerName", new { area = "AreaName"}, null)
あなたが求めているものを達成します。
DisplayTextは何を表示するか(と同じ<a href="#">DisplayText</a>
)、ActionNameはコントローラーで呼び出されるメソッド、ControllerNameは明らかに呼び出すコントローラーです!次のパラメータは、エリアを追加する「ルート値」です。現在エリアにいて、ルートなどに戻るHome/Index
場合は、値を空の文字列(例:)のままにしますnew { area = ""}
。最後の値は 'Html Attributes'であり、必要に応じてクラスnull
を追加します。追加する属性がない場合は、ここに追加する必要があります。しかし、最後のパラメーターは 'Html Attributes'として表示されるため、ルート値が認識されるためには、これはnull