C# ASP.NET MVC 5-将用户选择的样式表传递到_Layout.cshtml

C# ASP.NET MVC 5-将用户选择的样式表传递到_Layout.cshtml,c#,asp.net-mvc,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 5,我创建了一个设置页面,用户可以从下拉列表中选择引导样例主题。CSS主题文件位于~/Content/themes中。相应的设置控制器将此主题选项的名称存储在数据库中如何使用@Scripts.Render(“~/Content/themes”+themeName)”将值加载到_布局视图中?这样每个页面上都会加载主题 我正在努力解决这样一个事实,即_Layout.cshtml没有控制器,以及我应该如何从数据库中获取数据,即使用模型或控制器,或者完全其他的东西 以下是一个简化的结构概述: Website

我创建了一个设置页面,用户可以从下拉列表中选择引导样例主题。CSS主题文件位于
~/Content/themes
中。相应的设置控制器将此主题选项的名称存储在数据库中如何使用
@Scripts.Render(“~/Content/themes”+themeName)”将值加载到_布局视图中
?这样每个页面上都会加载主题

我正在努力解决这样一个事实,即_Layout.cshtml没有控制器,以及我应该如何从数据库中获取数据,即使用模型或控制器,或者完全其他的东西

以下是一个简化的结构概述:

Website
    Areas
        User
            Controllers
                >SettingsController.cs //here I store the value in the db
            Views
                Settings
                    >Index.cshtml //settings page view
            >_ViewStart.cshtml
    Controllers
    Views
        Shared
            >_Layout.cshtml
        >_ViewStart.cshtml

您可以从数据库中读取当前选定的布局,并根据选择布局。你可以这样想:

switch (SystemInfo.Theme)
        {
            case 1:
                Layout = "~/Views/Shared/Layouts/Themes/Blue/_LayoutMain.cshtml";
                break;
            case 2:
                Layout = "~/Views/Shared/Layouts/Themes/nice/_LayoutMain.cshtml";
                break;
           default:

            Layout = "~/Views/Shared/Layouts/Themes/default/_LayoutMain.cshtml";
            }

您可以将此代码放在您的
\u viewstart
中,并且不为视图设置
布局。

您是否有不同的
布局。cshtml
用于不同的下拉选项?@ramilu否,我应该吗?