使用MVC中的下拉菜单更改CSS样式

时间:2013-12-08 14:15:11

标签: asp.net-mvc asp.net-mvc-5

我正在尝试制作一个包含大量项目的下拉菜单(Amelia,Cerulean,Cosmo,Cyborg,Flatly,Journal)。这些项中的每一项都代表一个css文件。 当其中一个被选中时,我希望我的网站获取此选定的css文件并将其应用到网站。 我希望下拉菜单与jquery交互,这意味着当一个项目被选中时,jquery接管并对某些mvc actionresult进行asyn / ajax调用。 顺便说一下,我正在使用MVC 5。 我希望有人可以帮助我勾勒出最初的基础。

1 个答案:

答案 0 :(得分:0)

我已经在我的应用程序中实现了这个。

enter image description here

我不知道该告诉你什么。当我们尝试解决方案时,它会更容易。

以下是我的工作原理概述:

  • 我创建了一个名为 SharedController 的控制器。它的目的是包含各种动作,以实现共同的行动。所有操作都被视为ChildActionOnly
  • 我的 _Layout 使用RenderAction呈现我的SharedController中的 NavbarPartial 操作。
  • 更重要的是,Navbar partial然后使用RenderAction渲染动作 ThemeListPartial 。此操作负责获取可用主题的列表。可用主题列表在应用程序启动时确定。我创建了一个 ThemeFinder 类和 ThemeRepository 类,负责查找和存储主题。 ThemeFinder通过您提供的表达式查找主题。在一个名为App_Start / ThemeConfig的新类中,我只给了它一个表达式 - “〜/ Content / themes / {name} .bootstrap.css”。这将在该位置找到具有该命名约定的所有主题。
  • 我的剃刀代码将使用ViewModel并显示dropdown menu in the navbar
  • 要更改主题,我的下拉菜单中包含AJAX link ThemeController 中名为 SaveTheme 的操作。此操作将主题名称作为字符串,并尝试将其保存在用户的cookie中。
  • 如果找到并成功保存主题,则操作会以成功消息作出响应。
  • jQuery然后通过查找关联的link attribute并将HREF内容更改为新主题来更改主题。它知道新主题相对URL,因为我将其存储在data attributes

我在切换到AngularJs之前完成了此操作。我计划回过头来改变的一件事就是尽可能多地删掉(也许全部)jQuery并用更好的代码替换它。