【发布时间】:2017-10-23 20:37:05
【问题描述】:
我想为管理面板使用一个主题,而一个主题是单独的,我想向我的访问者展示。我的意思是说网站的访问者和管理员应该有不同的主题。 在asp.net mvc中怎么做? 因为在mvc中我们只有一个_Layout.cshtml文件,这里我们只需要附加一个主题。
【问题讨论】:
标签: c# html asp.net asp.net-mvc asp.net-core-mvc
我想为管理面板使用一个主题,而一个主题是单独的,我想向我的访问者展示。我的意思是说网站的访问者和管理员应该有不同的主题。 在asp.net mvc中怎么做? 因为在mvc中我们只有一个_Layout.cshtml文件,这里我们只需要附加一个主题。
【问题讨论】:
标签: c# html asp.net asp.net-mvc asp.net-core-mvc
您可以根据需要创建任意数量的布局文件。因此,在您的情况下,创建一个拥有自己的布局页面的管理区域是个好主意,您可以在其中使用您的管理主题 css 文件
Areas 是相关功能和所需文件的逻辑分组(控制器、视图、样式、代码等)。区域提供了一种将大型 Web 应用程序划分为较小功能组的方法。
对于您的普通访问者,他们的页面/视图使用默认布局,对于管理员用户,他们从拥有自己布局的管理区域获取呈现的视图。
对于来自管理区域的视图(甚至是_Viewstart.cshtml),您可以显式指定管理布局
@{
Layout = "~/Views/Shared/_AdminLayout.cshtml";
}
【讨论】:
在共享文件夹中定义第二个布局,使用另一个名称,如 _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";
}
如果您使用的是身份框架,那么您也可以根据条件定义布局
@{
if (User.IsInRole("Admin"))
{
Layout = "~/Views/Shared/_AdminLayout.cshtml";
}
else
{
Layout = "~/Views/Shared/_Layout.cshtml";
}
}
【讨论】: