【问题标题】:ASP.net - How to achieve CSS with constant values, arithmetic and string manipulationASP.net - 如何使用常量值、算术和字符串操作实现 CSS
【发布时间】:2012-04-14 01:34:57
【问题描述】:

在开发 ASP.NET 网站时(使用 VB.NET Web 表单)——我的很多时间都花在编写 CSS 文件上,而且它们似乎总是很乱(代码重复)而且很长。

我想要实现的只是能够通过以下方式使用 VB.NET 代码操作 CSS:

  • 使用整数变量来存储我的“黄金”数字 7,并在需要时将其用于宽度、填充、边距等
  • 使用字符串变量来存储我的“金色”十六进制颜色代码,例如"#44C5F2" 并在需要时将它们用于颜色、背景颜色、边框颜色等
  • 使用整数变量设置元素的高度,并有四个子元素,每个子元素的高度为:mynum / 4

我只想使用基本的 VB.net 数字和字符串操作来动态创建 CSS 文件。

我了解最终产品 - CSS 文件不应该有太大变化 - 它最多应该每天更改一次,否则无法使用缓存。

我也明白我会失去对 Visual Studio CSS 智能感知的支持,但是......

我如何做到这一点?

我应该使用:

  • 通用处理程序 (ASHX)
  • ASP.NET 主题
  • ASP.NET 皮肤
  • 还有别的吗?

我只是一些指针。

感谢任何帮助。

谢谢。

【问题讨论】:

    标签: asp.net css vb.net asp.net-mvc-3 asp.net-mvc-2


    【解决方案1】:

    我相信你正在寻找类似http://www.dotlesscss.org/的东西

    【讨论】:

    • 这是使用 VB.NET 代码还是 ASP.NET Razor 语法?还是一种全新的语法?
    • 叫我懒惰,但我认为我的 ASP.NET、VB.NET、CSS、JavaScript、HTML、Regex、T-SQL 和 LINQ-to-SQL 已经够用了.我希望有更多的.NET 方法。对不起。
    【解决方案2】:

    你应该看看LESS,它扩展了 CSS 以允许

    动态行为,例如变量、mixin、操作和函数

    dot less 是与 ASP.NET 集成的 .NET 版本。

    【讨论】:

    • 还有其他适用于 ASP.NET 的 CSS 元语言吗?
    • 我不知道。 dotless 与 ASP 有很好的集成,我想另一种选择将涉及通过 ASP 生成,正如您在问题中所建议的那样。 LESS/dotless 确实有它自己的语法,但它很快就能上手,而且我发现它不是 CSS 的扩展,而是填补了一些逻辑空白,而且学习时间不长。
    • 好的,但考虑到它仍处于测试阶段,在商业网站上使用它是个好主意吗?
    • 我只将它用于小型不重要的项目,所以我无法说。实际上,您正在考虑在运行 Beta 产品(相当受欢迎,已被顶级 ASP 博主广泛报道)或编写自己的产品的风险之间进行权衡。前者可能比自定义解决方案更强大,因为它已被许多人使用和测试,但您可能会发现您想要做的不仅仅是无点报价,这是自定义解决方案可能 更合适。在做出最终决定之前,我至少会花一些时间评估 dotless。
    【解决方案3】:

    我最终决定使用 WebHandler(ASHX 文件):

    CssOnTheFly.ashx

    <%@ WebHandler Language="C#" Class="CssOnTheFly" CodeBehind="CssOnTheFly.ashx.cs" %>
    

    CssOnTheFly.ashx.cs

    using System;
    using System.Web;
    
    public class CssOnTheFly : IHttpHandler
    {
    
        private HttpResponse r;
    
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/css";
    
            r = context.Response;
    
            writeCss();
        }
    
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    
        private void writeCss()
        {
            wl("body {");
            wl("height: 100%;");
            wl("}");
        }
    
        private void wl(string s)
        {
            r.Write(s + Environment.NewLine);
        }
    }
    

    因为我可以创建定制类来动态生成 CSS - 所以我有更大的灵活性。

    我认为我需要为此使用 C#,因为 VB.NET 并没有真正的多行字符串文字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      • 2022-11-02
      • 2015-02-11
      • 2014-11-21
      • 1970-01-01
      相关资源
      最近更新 更多