web-dev-qa-db-fra.com

Comment obtenir le nom de la vue actuelle dans asp.net MVC 3?

Comment obtenir le nom de la vue actuelle concernant l'URL actuelle dans asp.net MVC 3 à l'aide du moteur Razor?

19
Mohammad Saberi

Vous ne savez pas pourquoi vous devez obtenir le nom de la vue actuelle, mais vous pouvez utiliser la propriété VirtualPath dans une vue. Normalement, il est plus utile de connaître l'action ou le contrôleur en cours. Quoi qu'il en soit, voici comment obtenir le nom de la vue actuelle:

@VirtualPath

et si vous voulez obtenir uniquement le nom de fichier:

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

et sans l'extension:

@Path.GetFileNameWithoutExtension(Server.MapPath(VirtualPath))
31
Darin Dimitrov

J'ai aussi testé ce code et je pourrais faire quelque chose avec. Mais, je ne suis pas sûr si c'est une bonne solution ou non.

Par exemple, je dois détecter la vue Contacts située dans le répertoire de base. Alors j'ai écrit:

if (@Request.RawUrl == "/Home/Contacts")
{
   // do something
}
8
Mohammad Saberi

Vous pouvez l'obtenir auprès de RequestContext.RouteData . En particulier, sa collection de valeurs contient les clés "controller" et "action" , C.-à-d. ____.] RequestContext.RouteData.Values ​​["action"]

4
Artemiy

Equivalent ASP.NET Core:

@ViewContext.ExecutingFilePath

La sortie est comme ça:

/Views/Shared/String.cshtml

Le rendu d’une vue peut impliquer un ou plusieurs fichiers (_ViewStart, Layouts, etc.). Cette propriété contient le chemin du fichier en cours de rendu.

Propriété ViewContext.ExecutingFilePath

1
Jeremy Cook