Я хочу использовать одну тему для панели администратора и одну отдельную тему, которую я хочу показать своим посетителям. Я имею в виду, что должны быть отдельные темы для посетителя и администратора сайта. Как сделать в asp.net mvc? Потому что в mvc у нас всего один файл _Layout.cshtml и здесь мы должны прикрепить только одну тему.
Используйте две темы в asp.net mvc
Ответы (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";
}
}
Вы можете создать столько файлов макета, сколько необходимо. Поэтому в вашем случае хорошей идеей будет создать область администрирования с собственной страницей макета, в которой вы можете использовать файлы css темы администратора.
Области — это логическая группировка связанных функций и необходимых файлов. для этого (контроллеры, представления, стили, код и т. д.). Области позволяют разделить большое веб-приложение на более мелкие функциональные группы.
Для ваших обычных посетителей их страницы/представления используют макет по умолчанию, а для пользователей-администраторов они получают представления, отображаемые из области администрирования, где у них есть собственный макет.
Для представлений из области администратора (или даже _Viewstart.cshtml
) вы можете явно указать макет администратора
@{
Layout = "~/Views/Shared/_AdminLayout.cshtml";
}