158

mvc 2 アプリの 2 つの異なる領域から使用している共有マスター ページがあります。マスター ページには、現在コントローラーとアクションを指定するアクション リンクがありますが、もちろん、間違った領域にいる場合、リンクは機能しません。area パラメーターを取る actionlink のオーバーロードが見当たりません。

4

9 に答える 9

249

理解した..

Html.ActionLink("Link Text", "ActionName", "ControllerName", new { Area = "AreaName" }, new{})
于 2010-01-10T06:20:30.917 に答える
80

この直後に私が遭遇したことは、他の人が遭遇する可能性があると思います: エリア内からエリア外のアクションにリンクする必要がある場合でも、エリアを空の文字列として指定する必要があります。

たとえば、一部の MVC コードを領域に移動したところ、サイトの他のページを参照するマスター ページの URL を更新する必要があることがわかりました。

領域外のものへの URL を指定するには、次を使用します。

Html.ActionLink("home", "Index", new { area = "", controller = "Home" })
于 2010-04-25T20:52:44.963 に答える
16

使用する:

 Html.ActionLink("Text", "ActionName", "ControllerName", new { Area = "AreaName" }, null)

:4番目のパラメーターは route をValues渡すことです。空のパラメーターを渡すと、ルート構造が考慮され、適切な値を渡すと、それがエリアとして使用されます。

nullorを 5 番目のパラメーターとして使用することも忘れないでください。アクション リンクの作成中にorをnew{}渡すと、またはのメソッドがオーバーロードされないため、適切なメソッドを使用してください。nullnew {}(text,action,controller,route data)(text,action,controller,route data,html attribute)

于 2014-03-27T08:00:52.357 に答える
11

MVC2 ではarea="root"、以下のように私のために働いた

Html.ActionLink("Home", "Index", "Home", new { Area = "root" }, new{})
于 2011-10-14T07:44:33.473 に答える
4

ユーザーが事前に構築された認証システムにリンクできるようにするためのソリューションとして、私が思いついたのは次のとおりです。

私の各領域には、_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>
}
于 2012-09-22T03:53:02.663 に答える