0

MVC3 アプリケーション内のメイン _Layout.cshtml ファイル内にリンクを作成しています。

@Html.ActionLink("Security", "Index", "Home", new { area = "Security" }, new { })

ページがレンダリングされるとき、これは結果の Html です。

<a href="/Security">Security</a>

このリンクをクリックすると、空白のページが表示されます。

routedebuggerをインストールしました。結果は次のとおりです。

ルート デバッガーの出力

次のように、Global.ascx.cs 内に既定のルートがあります。

 routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            new string[] { "Eis.Mvc.Web" }// Parameter defaults
        );

およびセキュリティ エリアのルート:

context.MapRoute(
            "Security_default",
            "Security/{controller}/{action}/{id}",
            new { area = "Security", controller = "Home", action = "Index", id = UrlParameter.Optional },
            new string[] { "Eis.Mvc.Web.Areas.Security.Controllers" }
        );       

http://localhost:1410/Security/homeという URL を直接入力すると、正しいページが表示されます。

@Html.Action リンクに URL のコントローラー部分を含めるにはどうすればよいですか?

アプリケーションのルート部分内に Index アクションを持つ Home コントローラーがあり、ルート登録に Namespace フィルターを含める必要がありました。

ありがとう、キース

4

1 に答える 1

0

セキュリティ エリアのルート マッピングを次のように変更します。

context.MapRoute(
        "Security_default",
        "Security/{controller}/{action}/{id}",
        new { action = "Index", id = UrlParameter.Optional },
        new string[] { "Eis.Mvc.Web.Areas.Security.Controllers" }
    );    

defaults パラメーターのエリアとコントローラーの部分が削除されていることに注意してください。

今、@Html.ActionLink("Security", "Index", "Home", new { area = "Security" }, new { })レンダリング<a href="/Security/Home">Security</a>

キース

于 2011-06-22T14:16:18.083 に答える