Ответ 1
Метод просмотра имеет перегрузку, чтобы установить его мастер-раскладку примерно так.
return View ("NameOfView",masterName:"viewName");
Есть ли способ установить макет из контроллера?
попытались:
ViewData["Layout"] = "..."
return View("view", Model);
Я знаю, это будет звучать странно с некоторыми людьми....
Метод просмотра имеет перегрузку, чтобы установить его мастер-раскладку примерно так.
return View ("NameOfView",masterName:"viewName");
В методе действий вы можете использовать свойство MasterName в классе ViewResult для изменения страницы макета.
public ActionResult Index()
{
var myView = View();
myView.MasterName = "~/Views/Shared/_Layout2.cshtml";
return myView;
}
Используя свой код, вы можете поместить его в свой вид:
@ {
Layout = ViewData["Layout"];
}
Дарен Димитров имеет очень хороший ответ на этот с атрибутами:
Как указать различные макеты в файле ViewStart бритвы ASP.NET MVC 3?
В контроллере вы можете установить такую главную страницу. Я использую MVC 5.2
return View("ViewName", "MasterPageName", model)
Если у вас есть файл _ViewStart.cshtml в вашем каталоге представлений, вы можете автоматически установить макет для всех представлений в одной и той же папке (и вложенных папках):
@{
Layout = "~/Views/Shared/Layout.cshtml";
}