MVC: How to find what Controller or Action is calling from View?

In MVC 3.0  you might need to customize the View, hide or show some elements or some thing else. Even If you are using a one to one View file , you might know which Control is using the view, but you don't know which action is .
In case of  Master Layout , you don't know which Controller is using this View.

How to find a what Controller or Action is using this view?

What is Routing?
Routing helps you to use friendly URL and map it to a physical file.
Routing Provides the collection of the URL that is set to a pattern supported by routing.

MVC Framework provides Routing APIs.
System.Web.Routing -  check out some of the methods, better to know what else is available there!
The routing data provides the collection values from your URL.
{controller}/{action}/{id}

What is Routing Patterns
Routing api uses certain patterns to create the collection.
Some of them are like in locale, report
{locale}/{action}
What is Registering or setting up Routing :
To define how what kind of URL you like to use to call actual files, you need to provide the mapping in 'Global.asax" as below.

public static void RegisterRoutes(RouteCollection routes)
{
 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute( "Default",  // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults ); }

protected void Application_Start()
{ RegisterRoutes(RouteTable.Routes); }

Getting Routing Data
RouteData Class provides 'Value' method that has the collection that are used in the Routing.
From the View you can call this to get the 'Controller's Action method.

ViewContext.RouteData.Values["Action"].ToString();
ViewContext.RouteData.Values["Controller"].ToString();

Comments