Вы можете воспользоваться вложенными макетами. Создайте базовый контроллер и управляйте всеми контроллерами с этого.
public class ControllerBase : Controller
{
public ControllerBase()
{
ViewBag.Theme = "~/Views/Shared/Default/Views/_Layout.cshtml";
}
}
public class HomeController : ControllerBase
{
public ActionResult Index()
{
return View();
}
}
_ViewStart.cshtml (не вносите никаких изменений в этот файл)
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
Views / Shared / _Layout.cshtml
Это файл макета по умолчанию для Asp.NET Mvc. Очистите это и замените эти строки.
@{
Layout = ViewBag.Theme;
}
@RenderBody()
Вы можете изменить этот способ для областей. Вы можете получить информацию об активном шаблоне в BaseController из базы данных или где угодно.
Кстати, если вы хотите разместить свои представления вне папки поиска ~ / Views для ThemeableRazorViewEngine