2016-01-09 47 views
0

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

我很苦惱,_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

您對不同的下拉選項有不同的'Layout.cshtml'嗎? – ramiramilu

+0

@ramiramilu不,我應該嗎? –

回答

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意見。

相關問題