【问题标题】:Use two themes in asp.net mvc在asp.net mvc中使用两个主题
【发布时间】:2017-10-23 20:37:05
【问题描述】:

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

【问题讨论】:

    标签: c# html asp.net asp.net-mvc asp.net-core-mvc


    【解决方案1】:

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

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

    对于您的普通访问者,他们的页面/视图使用默认布局,对于管理员用户,他们从拥有自己布局的管理区域获取呈现的视图。

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

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

    【讨论】:

    • 没有兄弟不好。我们应该有两个 _Layout.cshtml 文件,其中两个主题链接。如果我为访问者主题创建了太多文件,那么我的网站的响应速度可能会变慢。
    • @Shyju 的答案是最佳方法。你这样做到底有什么问题?您的评论不清楚。
    • 是的,Cris Pratt,你说得对,答案不清楚
    【解决方案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";
    }
    

    如果您使用的是身份框架,那么您也可以根据条件定义布局

    @{
       if (User.IsInRole("Admin"))
       {
           Layout = "~/Views/Shared/_AdminLayout.cshtml";
       }
       else
       {
           Layout = "~/Views/Shared/_Layout.cshtml";
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-08-15
      • 2015-07-06
      • 1970-01-01
      • 2019-01-14
      • 1970-01-01
      • 1970-01-01
      • 2018-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多