【发布时间】:2010-03-22 14:30:53
【问题描述】:
我想知道如何从控制器操作中通过 MVC 框架识别控制器所在的区域(我的意思是,不让给定区域中的所有控制器都从具有该信息的基本控制器继承) .
我对子动作(通过 RenderAction 呈现的控制器动作)特别感兴趣,例如调用父控制器的区域。
我正在使用 ASP .NET MVC 2.0 RTM
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-areas asp.net-mvc-2
我想知道如何从控制器操作中通过 MVC 框架识别控制器所在的区域(我的意思是,不让给定区域中的所有控制器都从具有该信息的基本控制器继承) .
我对子动作(通过 RenderAction 呈现的控制器动作)特别感兴趣,例如调用父控制器的区域。
我正在使用 ASP .NET MVC 2.0 RTM
【问题讨论】:
标签: c# asp.net-mvc asp.net-mvc-areas asp.net-mvc-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 访问正确的路由。
【讨论】: