У меня есть таблица, содержащая разные цвета тем, и я определил _Layouts и css, я применил css к их уважительному макету.

Например _LayoutBlue _LayoutGreen

Я хочу проверить с помощью оператора switch, что, когда пользователь входит в систему перед рендерингом представления, он должен проверять идентификатор цвета темы, который пользователь выбрал при создании учетной записи, и применить к пользовательскому представлению

Вопрос в том, могу ли я сделать это из контроллера входа, чтобы управлять макетом рендеринга на основе цвета темы пользователя в таблице базы данных

Например, это

    switch(ThemeID)
   {
    case 1:
        Layout = "~/Views/Shared/_BlueLayout.cshtml";
        break;
    case 2:
        Layout = "~/Views/Shared/_MagentaLayout.cshtml";
        break;
    default:
         Layout = "~/Views/Shared/_Layout.cshtml";
        break;
   }
0
Andy Mike 26 Авг 2014 в 20:11

1 ответ

Лучший ответ

Да, как вы показали в своем вопросе, мы можем сделать то же самое, другой простой и эффективный способ:

Мы можем переопределить рендеринг макета по умолчанию, вернув макет из ActionResult, используя следующий код:

public ActionResult Index()
{
 RegisterModel model = new RegisterModel();
 var layout="";
 //Just check your conditions here instead in view and return a appropriate layout from here
 layout="~/Views/Shared/_BlueLayout.cshtml";
 return View("Index", layout , model);
}

ИЛИ Вместо применения условия в представлении просто поместите условия в контроллер как:

Контроллер:

public ActionResult Index()
{
 RegisterModel model = new RegisterModel();
 //Just check your conditions here instead in view and put appropriate layout in Viewbag from here
 Viewbag.layout="~/Views/Shared/_BlueLayout.cshtml";
 return View("Index", model);
}

Посмотреть :

@{
  Layout = Viewbag.layout;
}
1
Kartikeya Khosla 26 Авг 2014 в 20:55
Это было полезно ... Спасибо
 – 
user3811481
26 Авг 2014 в 21:48