1

1 つのエリアがあり、AreaRegistration で、エリア内のすべてのコントローラーが属する名前空間を定義しました。

context.MapRoute(
                "Admin_default",
                "Admin/{controller}/{action}/{id}",
                new { controller="Home", action = "Index", id = UrlParameter.Optional },
                new[] { "MySite.Admin.Controllers" }             // Namespaces
            );

そのルートが一致しない場合でも、そのエリアのコントローラーが呼び出されないようにする方法。IE /home/index (先頭に「admin」という単語はありません)。

例:

上記で定義されたエリアルートに属するコントローラー「MySite.Admin.Controllers.HomeController」がある場合。ルート "Admin/{controller}/{action}/{id}" (末尾の "Admin") と一致しない場合、コントローラー ファクトリがそのコントローラーを検索する (つまり、例外をスローする) ことを禁止したい。したがって、「home/index」と入力すると (先頭に「Admin」はありません)、Web サイトはコントローラーが見つからないというエラーをスローします。

私が十分に明確だったことを願っています。

4

1 に答える 1

2

エリアに合わせて制約を追加!

これは、ルートの制約に関する優れた読み物です。

独自のカスタム ルート制約を作成する場合は、以下をお読みください。

http://blogs.microsoft.co.il/blogs/bursteg/archive/2009/01/11/asp-net-mvc-route-constraints.aspx

編集:

デフォルト ルートを削除し、すべてがエリアにスコープされていることを確認します。次に、ホーム/インデックスはエリアにスコープされていないため、例外をスローします。

于 2010-04-10T21:02:20.847 に答える