Get ControllerName and ActionName and populate the ViewData in Master Page?

前端 未结 4 1440
离开以前
离开以前 2021-01-01 09:24

I\'ve a SuperController which will be inherited from all the controllers. In the constructor I\'m trying to populate the ViewData using the ControllerN

相关标签:
4条回答
  • 2021-01-01 09:59

    Don't use ViewData. Use this in your Site.Master instead:

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

    SO - Getting the name of the controller and action method in the view in ASP.Net MVC

    0 讨论(0)
  • 2021-01-01 10:01

    Assuming that I'm reading your post correctly, and you're not trying to access the controller/action names in the view, but INSTEAD trying to do something with them, and put the result into the viewdata:

    You can't do it in the constructor because the context hasn't been created yet. You need to override the Initialize method:

    protected override void Initialize(System.Web.Routing.RequestContext requestContext)
        {
            base.Initialize(requestContext);
    
            //here the routedata is available
            ViewData["controller_name"] = (ControllerContext.RouteData.Values["Controller"];
        }
    

    (Note that you could pass in just the ControllerContext.RouteData to your function and let it pick the values it needs.)

    0 讨论(0)
  • 2021-01-01 10:04

    I needed to get at these alot from views, and I hit it from a slightly different angle--I wrote a few extension methods to HtmlHelper to give the current ControllerName and ActionName. A bit easier to handle as you don't need to worry about diving into the ViewData[] bag or injecting stuff at appropriate places.

    0 讨论(0)
  • 2021-01-01 10:10

    Try this:

    RouteData.Values.First().Value.ToString()
    
    0 讨论(0)
提交回复
热议问题