2013-12-08 43 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