c# - 我如何知道我的 MVC Controller 操作在哪个区域被调用?

标签 c# asp.net-mvc asp.net-mvc-areas asp.net-mvc-2

我想知道如何从 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/

相关文章:

asp.net - 是否可以在asp.net 4.5中调用async Page_Load?

c# - MVC Razor 单选按钮

c# - 将 RouteLink 与区域一起使用

c# - 如何将此 MySQL 查询编写为 T-SQL?

c# - 如何使用 C# 从给定的 HTML 字符串中获取 IMG 标签的源代码

c# - 已启用迁移 : System. Runtime.Serialization.SerializationException 类型未为成员解析

asp.net-mvc - ASP.NET MVC 3 路由问题

c# - 我在反序列化期间遇到异常

c# - 身份不工作,无法访问身份数据

asp.net-mvc - 关于 ASP.NET MVC 项目结构的建议?