Я писал cms с MVC, который используется в качестве основного механизма для генерации страниц.
У меня все хорошо, но мне нужна была возможность создать уникальный шаблон бритвы для каждого сайта и, возможно, для каждого просмотра, если мне нужно.
По моим правилам каждый проект должен иметь уникальный код, связанный с URL-адресом.
Активы для каждого сайта проекта хранятся таким образом, чтобы местоположение относилось к проекту.
Таким образом, активы, связанные с проектом C0001, будут храниться в assets\C0001\
, а для C0002: assets\C0002\
и т. Д.
Чтобы сохранить порядок, я хотел, чтобы шаблоны бритв, связанные с проектом, тоже находились в папке assets\[ProjectCode]
, но проблема в том, что я получаю сообщение об ошибке ViewBag not existing in context
.
Так что это не сработает:
Layout = string.Concat("~/assets/",ViewBag.ProjectNumber,"/_Layout.cshtml");
Где следующим образом будет отображаться страница:
Layout = string.Concat("~/Views/Shared/_",ViewBag.ProjectNumber,"Layout.cshtml");
Я предполагаю, что первый макет не отображается, потому что он находится за пределами известных областей поиска для представлений? Но, как я говорю, где файл, я не вижу, в чем проблема?
Я рад работать с кодом в примере 2, но после значительного числа сайтов проекта директория общих представлений станет очень занятой.
Просто интересно, есть ли причина, по которой представления должны существовать в каталоге Views
?