2012-04-18 2 views

ответ

36

У метода просмотра есть перегрузка, чтобы установить его главный макет примерно так

return View ("NameOfView",masterName:"viewName"); 
6

Используя свой код, вы могли бы поставить это на ваш взгляд:

@ { 
    Layout = ViewData["Layout"]; 
} 
+0

вопрос конкретно спрашивает о контроллере ... – Nathan

+1

Он уже установить ViewData [ «Layout»] в его коде, это то, что ему нужно, чтобы добавить к виду, чтобы сделать его но я понимаю, что вы говорите. –

+0

Работает отлично для меня, Dotnet Core MVC не обладает свойством MasterName на представлении, поэтому я не мог этого установить. Я изменил этот код, чтобы быть немного более надежным. Layout = (ViewData ["Макет"] как строка)? "_layout"; – Matt

-2

Если у вас есть файл _ViewStart.cshtml в папке Views, вы можете автоматически установить макет для всех представлений в пределах одной и той же папке (и вложенные папки):

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

Вопрос был о том, как установить его с контроллера. –

+1

Достаточно честный, неверный вопрос :). В этом случае вы можете использовать предложение Роба выше. –

8

в методе действия вы можете использовать MasterName недвижимость в ViewResult класса, чтобы изменить макет страницы.

public ActionResult Index() 
     { 
      var myView = View(); 
      myView.MasterName = "~/Views/Shared/_Layout2.cshtml"; 
      return myView; 
     } 
+0

Всегда здорово видеть разные вкусы. –

2

В контроллере вы можете установить главную страницу следующим образом. Я использую MVC 5.2

return View("ViewName", "MasterPageName", model) 
Смежные вопросы