2

コントローラーのアクションから、MVC フレームワークを介してコントローラーが存在する領域を特定する方法を知りたいです (つまり、特定の領域内のすべてのコントローラーをその情報を持つベースコントローラーから継承させずに)。

私が特に興味を持っているのは、子アクション (RenderAction を介してレンダリングされるコントローラー アクション) の場合です。たとえば、呼び出し側の親コントローラーの領域です。

ASP .NET MVC 2.0 RTM を使用しています

4

1 に答える 1

2

RouteDataのメンバーである辞書から取得できますControllerContext

あなたのコントローラメソッドで(これはテスト済みのコードです):

string area = this.DataContext.RouteData.DataTokens["Area"].ToString();

私が使用しているルートは次のようになります。

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "MyRoute",
        MyArea/{controller}/{action}/{id},
        new {controller = "MyController", Action="Index" }
    );
}

私のエリア ルートはルート ルート (global.asax 内) よりも具体的であるため、最初にエリア ルートを登録していることに注意してください。

Phil Haack のルート デバッガーを使用してルートをチェックし、URL が正しいルートに到達していることを確認してください。

于 2010-03-22T14:54:02.457 に答える