Правильный способ использования _viewstart.cshtml и частичных представлений Razor?

Я использую _viewstart.cshtml для автоматического назначения тот же Razor Layout на мой взгляд.

It ' это мертвый простой файл в корне моей папки Views, который выглядит следующим образом:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

Это более СУХОЕ, чем добавление директивы @Layout к каждому отдельному представлению.

Однако это создает проблему для Razor partial , потому что они запускают содержимое _viewstart.cshtml и поэтому неправильно назначают себе макет, что делает их, ммм, больше не частичными.

Вот гипотетический проект, показывающий файл _viewstart.cshtml, общий файл _layout.shtml и частичное представление ("AnonBar.cshtml").

Example project structure

В настоящее время я обхожу это с помощью добавление следующей строки к каждому частичному представлению:

@{
    Layout = "";
}

Кажется, неправильный способ обозначать представление как частичное в Razor. (Обратите внимание, что в отличие от механизма просмотра веб-форм, расширение файла для частичных представлений такое же. )

Я рассмотрел и другие варианты, но они еще хуже:

  • Помещение всех частичных представлений в общую папку, чтобы они могли использовать общий _viewstart.cshtml. Это нарушает соглашение о том, что представления находятся в той же папке, что и их контроллер.
  • Не используются частичные представления.

Это то, что все еще дорабатывается командой движка Razor View Engine, или мне не хватает фундаментальной концепции?

155
задан Community 8 February 2017 в 14:30
поделиться