繁体   English   中英

在ASP.NET MVC中使用两个主题

[英]Use two themes in asp.net mvc

我想为管理面板使用一个主题,一个主题是另一个主题,我想向访问者展示。 我的意思是说网站的访问者和管理员应该有不同的主题。 在asp.net MVC中怎么办? 因为在mvc中,我们只有一个文件_Layout.cshtml,在这里我们仅需附加一个主题。

您可以根据需要创建任意多个布局文件。 因此,根据您的情况,最好创建一个管理区域,该区域具有自己的布局页面,您可以在其中使用管理主题css文件

区域是为此所需的相关功能和文件(控制器,视图,样式,代码等)的逻辑分组。区域提供了一种将大型Web应用程序划分为较小功能分组的方法。

对于您的普通访问者,他们的页面/视图使用默认布局,对于admin用户,他们从具有其自身布局的admin区域获取呈现的视图。

对于来自管理区域(甚至_Viewstart.cshtml )的_Viewstart.cshtml ,您可以显式指定管理布局

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

在共享文件夹中定义第二个布局,使用另一个名称,例如_AdminLayout等。在其中调用@RenderBody()函数,现在您可以通过不同的方式渲染布局,

1.在视图中定义布局:

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

2.从ActionResult渲染布局页面(使用Controller。查看扩展方法):

    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";
   }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM