13

Phil Haack Areas(1)のアイデアとSteve Sandersonの微調整(2)を使用したい新しいプロジェクトに取り組んでいます。エリア(Foo)のビューへのアクションリンクを含む単純なルートビューがあります。生成されるURLには適切な領域がありますが、最後にルートコントローラー(バー)が追加されます。これが私のルートビューコードです:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Index</h2>

<%= Html.ActionLink("Foo Index Page", "Index", new { area="Foo" } )%>

</asp:Content>

生成されるURLは次のとおりです。

localhost:6494 / Foo / Bar

「/Bar」がそこにある理由は何かわかりますか?

(1):haacked.com/archive/2008/11/04/areas-in-aspnetmvc.aspx

(2):blog.codeville.net/2008/11/05/app-areas-in-aspnet-mvc-take-2/

4

3 に答える 3

20

私は解決策を見つけました。適切ではないと思いますので、改善をお願いします。コントローラー名を指定することで、URL を適切に形成することができます。IE

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

<h2>Index</h2>

<%= Html.ActionLink("Foo Index Page", "Index", new { area="Foo", controller="Baz" } )%>

</asp:Content>

これを行ったら、URLは正しかった

ローカルホスト:6494/フー

なぜこれが問題なのですか?Phil のデモでは、HomeController という名前のコントローラーを使用しています。Html.ActionLink() メソッドがどのように URL を構築するのか (追跡できないため) わかりません。しかし、私が持っていない既存の HomeController のデフォルトのケースに依存しているように見えます。

Home という名前のないコントローラをデフォルトにする方法について提案がある場合は、返信してください。ありがとう

于 2009-05-19T15:43:54.073 に答える
2

Homeデフォルトのコントローラー名として持たないようにするには、単純にデフォルトのルートを変更します

于 2009-05-19T15:52:23.027 に答える
0

@ジョー

App_Start/RouteConfig.cs ファイルで、既定のコントローラーの値を Home から好きなものに変更する必要があります。

routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "NAME_OF_YOUR_HOME_CONTROLLER", action = "Index", id = "" }  // Parameter defaults
        );
于 2013-06-27T17:30:05.620 に答える