Почему Razor _layout.cshtml имеет лидирующее подчеркивание в имени файла?
В проекте ASP.NET MVC по умолчанию, макет и частичные файлы cshtml начинаются с подчеркивания
-
_viewstart
-
_Layout
-
_LogOnPartial
Что означает это соглашение, и для чего оно используется? Нужно ли мне следовать этому соглашению?
Предоставляет ли среда какое-то особое значение файлу .cshtml
, который начинается с подчеркивания?
Ответы
Ответ 1
Razor был разработан для веб-страниц ASP.NET(WebMatrix), который не имеет такой же защиты, что и в папках Views и Routing, которые вы получаете в MVC. Поскольку страницы макета в веб-страницах не предназначены для обслуживания напрямую, они имеют префикс с подчеркиванием. И структура веб-страниц была настроена так, чтобы не разрешать напрямую запрашивать файлы с ведущими подчеркиваниями в своих именах. Другие .cshtml файлы в веб-страницах обычно должны быть доступны для просмотра. Они эквивалент файлов .asp или .php.
Команда ASP.NET заявила, что веб-страницы являются отправной точкой в разработке ASP.NET, что должно привести к миграции в MVC вовремя (для тех, кто хочет двигаться дальше). Часть этого означает, что нужно как можно проще выполнить миграцию с веб-страниц на MVC. Следовательно, имеет смысл переносить соглашения об именах, установленные в веб-страницах, в файлы MVC Razor.
Итак, есть техническая причина для префикса имен файлов с помощью подчеркивания - это просто не относится к MVC.
Ответ 2
То, как это делает Ruby on Rails (Partials начинаются с _, но Render Partial call не включает _), и ASP.net MVC черпал вдохновение из него.
Никакой технической причины, просто соглашение, чтобы четко показать намерение другим разработчикам (и вам через 6 месяцев) сказать: Это частичное представление.
Ответ 3
Страницы, которые не могут отображаться прямыми запросами вашего браузера (основные страницы, частичные представления и т.д.), имеют подчеркивание (_) в начале их имен.
Итак, если вы попытаетесь сделать запрос на _Layout.cshtml(это главная страница), вы получите сообщение об ошибке с сервера.
Его способ отличить файлы, которые нельзя просматривать как отдельные страницы, в режиме просмотра Razor.
Подумайте об этом таким образом... в MVC 2... вы бы разделили частичный вид и mastersite с sufix.master,.ascx и нормальными страницами .aspx, с другой стороны, в режиме Razor... все представления -.cshtml, поэтому для выделения частичных и мастер-страниц у них будет префикс (_). его ничего обязательного, просто "конвенция".
Ответ 4
Насколько я знаю, это просто соглашение, используемое для определения намерения файла; Я не верю, что это действительно изменит поведение файла. В большинстве контекстов разработки добавление подчеркивания указывает на то, что предназначено для использования "private", будь то классом или в этом случае другим шаблоном.
Ответ 5
Я не использую MVC, но с веб-страницами, которые также используют синтаксис бритвы, префикс _ в целом указывает, что страница не предназначена для доступа пользователем, а другими страницами или некоторым кодом.
Если вы попытаетесь перейти на страницу, содержащую _prefix, asp.net будет препятствовать доступу к ней.
Вот почему он используется с макетными страницами и другими такими страницами, так как к ним не следует обращаться напрямую пользователем.
Что-то вроде папки App_Code в asp.net