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 回答