代码之家  ›  专栏  ›  技术社区  ›  kripto_ash

我如何知道我的MVC控制器动作被调用在哪个区域?

  •  2
  • kripto_ash  · 技术社区  · 14 年前

    我想知道如何从控制器操作中,通过MVC框架识别控制器所在的区域(我的意思是,不需要让给定区域中的所有控制器从具有该信息的基本控制器继承)。

    我对子操作(通过renderAction呈现的控制器操作)的情况特别感兴趣,例如,调用父控制器的区域。

    我正在使用ASP.NET MVC 2.0 RTM

    1 回复  |  直到 14 年前
        1
  •  2
  •   Robert Harvey    14 年前

    你可以从 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)更具体,所以我正在注册我的区域路由 第一。

    您应该使用PhilHaack的路由调试器检查您的路由,并确保您的URL访问了正确的路由。