加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

在ASP.NET MVC中动态地从数据库生成CSS文件

发布时间:2020-12-15 20:07:42 所属栏目:asp.Net 来源:网络整理
导读:我正在寻找一些基本的主题支持我的Web应用程序,用户可以自定义外观的各个部分.这些包括颜色,文字大小,字体,其他基本的东西.我将把它们存储在数据库中,并在每次访问页面时加载它们. 我的问题是,如何根据这些数据库值生成动态CSS文件? 我宁愿做一些可缓存的东
我正在寻找一些基本的主题支持我的Web应用程序,用户可以自定义外观的各个部分.这些包括颜色,文字大小,字体,其他基本的东西.我将把它们存储在数据库中,并在每次访问页面时加载它们.

我的问题是,如何根据这些数据库值生成动态CSS文件?

我宁愿做一些可缓存的东西,但是可扩展,所以如果我想添加更多可编辑的样式,那么这不是一个问题.

解决方法

我认为最简单的方法是将如下操作方法添加到控制器中:
public class CssController : Controller {
    public ActionResult GetCss() {
        StringBuilder sb = new StringBuilder();
        Dictionary<string,string> cssValues = new Dictionary<string,string>();
        // populate dictionary with values from your database
        sb.AppendLine(".myDivClass {");
        foreach (var entry in cssValues) {
            sb.AppendLine(entry.Key + ": " + entry.Value);
        }
        sb.AppendLine("}");
        return Content(sb.ToString(),"text/css");
    }
}

现在在您的页面中,您可以这样引用:

<link href="<%: Url.RouteUrl(new { controller=  "CssController",action = "GetCss" }) %>" rel="stylesheet" type="text/css" />

OP编辑:我对该方法进行了一些小的改动,但总的前提依然存在.这是我使用的版本:

public class CssController : Controller
{
    public ContentResult GetTheme()
    {
        var builder = new StringBuilder();
        IDictionary<string,IDictionary<string,string>> css = new Dictionary<string,string>>();

        /* Populate css object from the database */

        foreach (var selector in css)
        {
            builder.Append(selector.Key);
            builder.Append(" { ");
            foreach (var entry in selector.Value)
            {
                builder.Append(string.Format("{0}: {1}; ",entry.Key,entry.Value));
            }
            builder.AppendLine("}");
        }

        return Content(builder.ToString(),"text/css");
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读