2013-12-08 77 views
0

我試圖製作一個下拉菜單,其中有一堆項目(Amelia,Cerulean,Cosmo,Cyborg,Flatly,Journal)。這些項目中的每一個都代表一個css文件。 當其中一個被選中時,我希望我的網站將這個選定的CSS文件應用到網站上。 我想下拉菜單與jQuery進行交互,這意味着當一個項目被選中時,jquery接管並對一些mvc actionresult進行asyn/ajax調用。 順便說一句,我使用MVC 5. 我希望有人能幫我畫出最初的基礎。使用MVC中的下拉菜單更改CSS樣式

回答

0

我已經在我的應用程序中實現了這一點。

enter image description here

我不知道什麼,雖然要告訴你。當我們嘗試解決問題時更容易。

這裏是我的工作原理概述:

  • 我創建了一個名爲SharedController控制器。它的目的是包含各種可以採取共同行動的行動。所有的行爲都被認爲是ChildActionOnly
  • 我的_Layout使用RenderAction來呈現動作NavbarPartial這是在我的SharedController。
  • 更重要的是,Navbar局部使用RenderAction渲染動作ThemeListPartial。此操作負責獲取可用主題的列表。可用主題的列表在應用程序啓動時確定。我創建了ThemeFinder類和ThemeRepository負責查找和存儲主題的類。 ThemeFinder通過您提供的表達式來查找主題。在一個名爲App_Start/ThemeConfig的新類中,我只給了它一個表達式 - 「〜/ Content/themes/{name} .bootstrap.css」。這將在該位置找到具有該命名約定的所有主題。
  • 我的剃鬚刀代碼將採用ViewModel並顯示dropdown menu in the navbar
  • 要獲取主題以更改我的下拉菜單中包含AJAX link的行爲稱爲SaveThemeThemeController。此操作將主題名稱作爲字符串並嘗試將其保存在用戶的Cookie中。
  • 如果主題找到並保存成功,則操作會響應成功消息。
  • jQuery然後通過查找關聯的link attribute並將HREF內容更改爲新主題來更改主題。它知道新的主題相對URL,因爲我已將它存儲在data attributes中。

我完成之前,我做了切換到。我計劃回去改變的一件事是儘可能多地刪除(也許是全部)jQuery,並用更好的代碼替換它。

+0

Hi Rowan感謝您的回答。 – Ovis