我想知道如何从 Controller 操作中通过 MVC 框架识别 Controller 所在的区域(我的意思是,不让给定区域中的所有 Controller 继承自具有该信息的基本 Controller ) .
我对子操作(通过 RenderAction 呈现的 Controller 操作)特别感兴趣,例如调用父 Controller 的区域。
我正在使用 ASP .NET MVC 2.0 RTM
最佳答案
您可以从作为您的 ControllerContext
成员的 RouteData
字典中获取它。
在您的 Controller 方法中(这是经过测试的代码):
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 到达正确的路由。
关于c# - 我如何知道我的 MVC Controller 操作在哪个区域被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2492974/