我创建了一个“设置”页面,用户可以从下拉列表中选择Bootswatch主题。 CSS主题文件位于~/Content/themes
。相应的SettingsController将此主题选择的名称存储在数据库中。 如何使用 @Scripts.Render("~/Content/themes" + themeName)
将值加载到_Layout视图中?这样主题就会加载到每一页上。
我正在努力解决_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
答案 0 :(得分:0)
您可以从数据库中读取当前选定的布局,并根据您的布局选择。你可以这样想:
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";
}
您可以将此代码放在_viewstart
中,不要为视图设置Layout
。