Я хочу добавить темы на свой сайт, которые будут использовать совершенно разные виды. Я хочу видеть их в своем проекте так:
Views/Theme1/...
Views/Theme2/...
вместо значения по умолчанию
Views/...
И потому мне нужен простой способ переключения между ними.
Итак, вопрос: как я могу заставить ViewEngine искать представления в определенном месте, упомянутом, например, в web.config?
Добавлена
Решил базовую проблему с этим, спасибо Арчилу:
public class ThemedRazorViewEngine : RazorViewEngine
{
public ThemedRazorViewEngine(string themeName)
{
MasterLocationFormats = new string[] { "~/Views/" + themeName + "/Shared/{0}.cshtml" };
PartialViewLocationFormats = new string[] { "~/Views/" + themeName + "/{1}/{0}.cshtml" };
ViewLocationFormats = new string[] { "~/Views/" + themeName + "/{1}/{0}.cshtml" };
}
}
Все хорошо, но «правый клик -> перейти к просмотру» больше не работает (побочный эффект, ничего страшного).
А теперь у меня возник другой вопрос: на веб-сайте у нас есть панель администрирования, которая должна быть независимой от темы. Как я могу это исправить? иметь что-то вроде этого:
Views/Admin/...
Views/Theme1/...
Views/Theme2/...