Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get the current view name in asp.net MVC 3?

How can I get the current view name regarding to current URL, in asp.net MVC 3 using Razor engine?

like image 839
Mohammad Saberi Avatar asked Jun 10 '11 19:06

Mohammad Saberi


4 Answers

No idea why you would need to get the current view name but you could use the VirtualPath property inside a view. Normally it's more useful to know the current action or controller. But anyway, here's how to get the current view name:

@VirtualPath

and if you wanted to get only the filename:

@Path.GetFileName(Server.MapPath(VirtualPath))

and without the extension:

@Path.GetFileNameWithoutExtension(Server.MapPath(VirtualPath))
like image 98
Darin Dimitrov Avatar answered Nov 13 '22 10:11

Darin Dimitrov


I've also tested this code, and I could do something with it. But, I'm not sure if is this a good solution or not.

For example, I need to detect the Contacts view located in Home directory. So I wrote:

if (@Request.RawUrl == "/Home/Contacts")
{
   // do something
}
like image 20
Mohammad Saberi Avatar answered Nov 13 '22 11:11

Mohammad Saberi


You can get it from RequestContext.RouteData specifically, its Values collection contains "controller" and "action" keys i.e. RequestContext.RouteData.Values["controller"] RequestContext.RouteData.Values["action"]

like image 4
Artemiy Avatar answered Nov 13 '22 12:11

Artemiy


ASP.NET Core's equivalent:

@ViewContext.ExecutingFilePath

Output is like this:

/Views/Shared/String.cshtml

The rendering of a view may involve one or more files (e.g. _ViewStart, Layouts etc). This property contains the path of the file currently being rendered.

ViewContext.ExecutingFilePath Property

like image 2
Jeremy Cook Avatar answered Nov 13 '22 12:11

Jeremy Cook