.net MVC правильный способ ссылки на представления в пределах области - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть приложение .Net MVC с несколькими областями, одна из которых называется Admin. Когда я выполняю / Admin / Home / Index, выполняется метод Index () в области администратора Home, и возвращается правильный файл Index.cshtml. Пока все хорошо.

Моя проблема связана с _Layout.cshtml. Я хочу, чтобы макет был разным для каждой области и для основного сайта. Для этого я добавил _ViewStart.cshtml в папку Views моей области администратора, и в этом _ViewStart у меня есть следующее:

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

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

Подобный вопрос был задан здесь:

Область не использует правильный вид

В одном ответе, который был дан, сказано, что полностью определенный путь - это путь, хотя он не был помечен как ответ ОП.

Так что мой вопрос таков. Необходимо ли использовать полный путь к ссылочным видам в области? Разве нельзя сделать это в области:

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

Основано ли на выполняемом контроллере, не способен ли механизм просмотра решить, что мне нужно представление из общей папки области, а не представление из общей папки основного сайта?

Спасибо, Chris

1 Ответ

0 голосов
/ 28 августа 2018

Ваши виды внутри Области будут автоматически искать папку «Виды» в этой области для файла _ViewStart.cshtml или _ViewImports.cshtml. В вашем случае я бы посоветовал поместить файл _ViewStart.cshtml в папки View вашей области (а не в их общие папки!) И сделать так, чтобы он ссылался на файл _Layout по вашему выбору, например:

_ViewStart.cshtml

@{
    Layout = "_Layout";
}
...