在.net中动态更改较少的变量

时间:2015-02-24 19:47:30

标签: css asp.net-mvc less dotless

问题:我必须允许用户使用spectrum.js根据自己的喜好为按钮,图标,文字颜色设置不同的颜色

我试图用无点来解决这个问题,因为我创建了一个无文件并添加了所有值。现在的问题是我必须从基于loggedInuser的数据库获取值并且必须动态更改

@back-color: blue;
@font-color: red;

到不同的值,这必须在运行时完成,而不是编译时间。我知道这会花费我一些延迟,但我不知道如何解决其他问题。

我一直在考虑使用不同的解决方案而不是为了节省时间我为什么不创建一个css文件保存在数据库中以及当用户登录时创建一个css文件并注入头文件

<link href="~/Content/dynamic.css" rel="stylesheet" />

有人可以帮助我或任何有关此事的建议吗?

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

选项1 实现资源的特殊处理程序,表示用户自定义的css。 这个处理程序必须:

  1. 使查找(通过userId)缓存已经存储较少(即css)的位置;
  2. 如果缓存具有所请求用户的条目,则将css写入响应并完成对此请求的处理;
  3. 如果缓存没有所请求用户的条目,则为该用户渲染较少,将其存储在缓存中并转到步骤2.
  4. 当用户更改其颜色主题时,您还应该删除/更新缓存条目。 您可以根据需要实现缓存:在内存中,内部数据库或内部静态文件(例如),如%userId%.css。

    选项2 而不是在服务器端渲染较少(并消耗服务器资源),您可以动态地在客户端上渲染较少。 例如:http://jsbin.com/wiqosutexe/5/edit?html,js,output

    1. 包含lessjs http://lesscss.org/#download-options;
    2. 为客户端脚本提供较少的模板(使用ajax,包含在脚本本身或其他方式);
    3. 使用用户首选项替换较少的模板。
    4. 渲染模板并将结果(普通css)插入到动态创建的样式标记中。