我想知道如何从控制器操作中通过 MVC 框架识别控制器所在的区域(我的意思是,不让给定区域中的所有控制器都从具有该信息的基本控制器继承)。
我对子操作(通过 RenderAction 呈现的控制器操作)的情况特别感兴趣,例如调用父控制器的区域。
我正在使用 ASP .NET MVC 2.0 RTM
我想知道如何从控制器操作中通过 MVC 框架识别控制器所在的区域(我的意思是,不让给定区域中的所有控制器都从具有该信息的基本控制器继承)。
我对子操作(通过 RenderAction 呈现的控制器操作)的情况特别感兴趣,例如调用父控制器的区域。
我正在使用 ASP .NET MVC 2.0 RTM
您可以从属于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 访问正确的路由。