Как получить имя текущего вида в asp.net MVC 3? - PullRequest
19 голосов
/ 10 июня 2011

Как я могу получить имя текущего представления относительно текущего URL в asp.net MVC 3 с использованием движка Razor?

Ответы [ 4 ]

31 голосов
/ 11 июня 2011

Не знаю, зачем вам нужно получать имя текущего представления, но вы можете использовать свойство VirtualPath внутри представления. Обычно более полезно знать текущее действие или контроллер. Но в любом случае вот как получить имя текущего вида:

@VirtualPath

и если вы хотите получить только имя файла:

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

и без расширения:

@Path.GetFileNameWithoutExtension(Server.MapPath(VirtualPath))
8 голосов
/ 12 июня 2011

Я также проверил этот код, и я мог бы что-то с ним сделать.Но я не уверен, является ли это хорошим решением или нет.

Например, мне нужно определить представление «Контакты» в домашнем каталоге.Итак, я написал:

if (@Request.RawUrl == "/Home/Contacts")
{
   // do something
}
4 голосов
/ 11 июня 2011

Вы можете получить его из RequestContext.RouteData, в частности, его коллекция значений содержит ключи «controller» и «action», т.е.

1 голос
/ 17 января 2018

Эквивалент ядра ASP.NET:

@ViewContext.ExecutingFilePath

Вывод выглядит следующим образом:

/Views/Shared/String.cshtml

Для рендеринга представления может использоваться один или несколько файлов (например, _ViewStart,Макеты и т. Д.).Это свойство содержит путь к файлу, который отображается в данный момент.

Свойство ViewContext.ExecutingFilePath

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...