获取ControllerName和ActionName并在Master Page中填充ViewData?

我有一个SuperController将从所有控制器继承。 在构造函数中,我试图使用ControllerName和ActionName来填充ViewData。

我不打算将ControllerName和ActionName作为ViewData传递。 我有一个需要ControllerName和ActionName的方法,我需要将方法的返回值作为ViewData传递。

我怎样才能做到这一点?


不要使用ViewData 。 相反,在你的Site.Master中使用它:

<%= ViewContext.RouteData.Values["Controller"] %>
<%= ViewContext.RouteData.Values["Action"] %>

SO - 在ASP.Net MVC视图中获取控制器名称和操作方法


尝试这个:

RouteData.Values.First().Value.ToString()

假设我正确地阅读了你的文章,并且你没有试图访问视图中的控制器/动作名称,但INSTEAD试图对它们做些什么,并将结果放入viewdata中:

你不能在构造函数中完成它,因为上下文尚未创建。 您需要重写Initialize方法:

protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    {
        base.Initialize(requestContext);

        //here the routedata is available
        ViewData["controller_name"] = (ControllerContext.RouteData.Values["Controller"];
    }

(请注意,您可以将ControllerContext.RouteData传递给您的函数,并让它选择它需要的值。)

链接地址: http://www.djcxy.com/p/23355.html

上一篇: Get ControllerName and ActionName and populate the ViewData in Master Page?

下一篇: Use Google maps API to draw a polyline that changes color