2010-11-09 5 views
1

J'ai créé ma propre classe de vue Razor, ainsi:Déterminer l'emplacement physique de vue Razor dans MVC3

public abstract class MyWebViewPage : System.Web.Mvc.WebViewPage 
{ 
    public MyWebViewPage() 
    { 
    } 
} 

J'utilise cette classe dans mon fichier cshtml, ainsi:

@inherits MyWebViewPage 
<html> 
    ... 
</html> 

Je veux pour déterminer l'emplacement physique du fichier cshtml dans le constructeur de la classe, mais ne semble pas être en mesure d'obtenir un handle sur quelque chose dans la classe de base qui pourrait me le dire. Des idées? J'essaie de trouver le nom du domaine et le nom du dossier de la vue (par exemple, Areas/MyArea/Views/MyViews/MyView.cshtml). Les bits pertinents étant "MyArea" et "MyViews".

Je portage actuellement une application pour utiliser des vues de rasoir et je l'habitude d'être en mesure de faire ce que je avais besoin parce que le nom de la classe de la vue était quelque chose le long des lignes de:

ASP_Areas_MyArea_Views_MyViews_MyView

Mais avec rasoir, il est juste:

ASP_MyView

+0

qu'essayez-vous d'atteindre? – Ahmad

+0

J'ai ajouté ce que j'essaie d'atteindre à la question. Merci. –

Répondre

3

Vous devriez être en mesure de regarder la propriété VirtualPath. Il ne sera pas disponible lorsque le constructeur est appelé, mais vous pouvez remplacer ConfigurePage et y effectuer un traitement.

+0

Merci pour cela. J'ai effectivement trouvé ce que je recherchais en remplaçant ConfigurePage et en utilisant parentPage.VirtualPath (en utilisant 'this' m'a donné le _Layout.cshtml, comme j'utilise Layouts). –

Questions connexes