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

后端 未结 4 847
故里飘歌
故里飘歌 2020-12-01 12:46

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

相关标签:
4条回答
  • 2020-12-01 13:13

    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))
    
    0 讨论(0)
  • 2020-12-01 13:21

    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
    }
    
    0 讨论(0)
  • 2020-12-01 13:25

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

    0 讨论(0)
  • 2020-12-01 13:27

    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

    0 讨论(0)
提交回复
热议问题