Почему 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