Используйте две темы в asp.net mvc

Я хочу использовать одну тему для панели администратора и одну отдельную тему, которую я хочу показать своим посетителям. Я имею в виду, что должны быть отдельные темы для посетителя и администратора сайта. Как сделать в asp.net mvc? Потому что в mvc у нас всего один файл _Layout.cshtml и здесь мы должны прикрепить только одну тему.


person Community    schedule 23.10.2017    source источник


Ответы (2)


Определите второй макет в общей папке с другим именем, например _AdminLayout и т. д., вызовите в нем функцию @RenderBody(). Теперь вы можете отображать макеты разными способами,

<сильный>1. Определить макет в представлении:

    @{
       ViewBag.Title = "View_Title";
       Layout = "~/Views/Shared/_AdminLayout.cshtml";
     }

<сильный>2. Отрисовка страницы макета из ActionResult (с использованием метода расширения Controller. View):

    public ActionResult Action_Result_Name()
    {
        return View("Action_Result_Name","_AdminLayout");
    } 

<сильный>3. Использование страницы _ViewStart.cshtml:
страница _ViewStart.cshtml, используемая для определения страницы макета по умолчанию для приложения MVC.

@{   
    layout = "~/Views/Shared/_AdminLayout.cshtml";
}

Если вы используете платформу Identity, вы также можете определять макеты на основе условий

@{
   if (User.IsInRole("Admin"))
   {
       Layout = "~/Views/Shared/_AdminLayout.cshtml";
   }
   else
   {
       Layout = "~/Views/Shared/_Layout.cshtml";
   }
}
person Saqib A. Azhar    schedule 24.10.2017

Вы можете создать столько файлов макета, сколько необходимо. Поэтому в вашем случае хорошей идеей будет создать область администрирования с собственной страницей макета, в которой вы можете использовать файлы css темы администратора.

Области — это логическая группировка связанных функций и необходимых файлов. для этого (контроллеры, представления, стили, код и т. д.). Области позволяют разделить большое веб-приложение на более мелкие функциональные группы.

Для ваших обычных посетителей их страницы/представления используют макет по умолчанию, а для пользователей-администраторов они получают представления, отображаемые из области администрирования, где у них есть собственный макет.

Для представлений из области администратора (или даже _Viewstart.cshtml) вы можете явно указать макет администратора

@{
    Layout = "~/Views/Shared/_AdminLayout.cshtml";
}
person Shyju    schedule 23.10.2017
comment
Нет, брат, это нехорошо. У нас должно быть два файла _Layout.cshtml, в которых две темы связаны. Если я создам слишком много файлов для тем посетителей, есть вероятность, что мой сайт будет работать медленно. - person ; 23.10.2017
comment
Ответ @Shyju - оптимальный подход. Какая у вас проблема именно с этим? Ваш комментарий не ясен. - person Chris Pratt; 23.10.2017
comment
Да, Крис Пратт, ты говоришь правильно, ответ не ясен. - person ; 25.10.2017