簡體   English   中英

ASP.NET MVC 5-將用戶選擇的樣式表傳遞給_Layout.cshtml

[英]ASP.NET MVC 5 - Passing user chosen stylesheet to _Layout.cshtml

我創建了一個“設置”頁面,用戶可以在其中從下拉列表中選擇Bootswatch主題。 CSS主題文件位於~/Content/themes 相應的SettingsController將這個主題選擇的名稱存儲在數據庫中。 如何使用 @Scripts.Render("~/Content/themes" + themeName) 將值加載到_Layout視圖中 這樣就可以在每個頁面上加載主題。

我為_Layout.cshtml沒有控制器以及如何從db中獲取數據(即使用模型或控制器,或完全使用其他方法)而苦惱。

這是簡化的結構概述:

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

您可以將此代碼放在_viewstart而無需設置“ Layout ”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM