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

2019-01-11 10:29发布

问题:

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

回答1:

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))


回答2:

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
}


回答3:

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"]



回答4:

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