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