我如何知道我的 MVC 控制器操作正在哪个区域被调用?

发布于 2024-08-25 22:25:21 字数 173 浏览 8 评论 0原文

我想知道如何从控制器操作中通过 MVC 框架识别控制器所在的区域(我的意思是,无需使给定区域中的所有控制器都从具有该信息的基本控制器继承)。

我对子操作(通过 RenderAction 呈现的控制器操作)的情况特别感兴趣,例如调用父控制器的区域。

我正在使用 ASP .NET MVC 2.0 RTM

I want to know how, from a controller action, I could identify the area in which the controller is in via the MVC framework (I mean, without making all controllers in a given area inherit from a base controller with that info).

I'm particularly interested in the case of child actions (controller actions rendered via RenderAction), the area of the calling parent controller for instance.

I'm using ASP .NET MVC 2.0 RTM

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无名指的心愿 2024-09-01 22:25:21

您可以从 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 命中了正确的路由。

You can get it from the RouteData dictionary that is a member of your ControllerContext.

In your controller method (this is tested code):

string area = this.DataContext.RouteData.DataTokens["Area"].ToString();

The route that I am using looks like this:

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "MyRoute",
        MyArea/{controller}/{action}/{id},
        new {controller = "MyController", Action="Index" }
    );
}

Note that, because my area routes are more specific than my root routes (in global.asax) I am registering my area routes first.

You should check your routes using Phil Haack's route debugger, and make sure that your Url is hitting the correct route.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文