ASP.Net 呈现的不正确的背景图像样式

标签 asp.net css background-image

使用 ASP.Net,我有一个服务器控件,我想为其添加内联 css 样式“background-image:none”。但是,当我打电话时:

writer.AddStyleAttribute("background-image", "none");

生成以下内联样式(并尝试解析 url“none”):

background-image:url(none)

我可以使用特殊语法将背景图像设置为无内联吗?

最佳答案

查看 .NET Reflector 中 HTMLTextWriterCssTextWriter 类的代码,我唯一能想到的就是自己对 HTMLTextWriter 进行子类化.

“Binary not the first element in the style enum”,~HtmlTextWriterStyle.BackgroundColor,是它用于任何其名称无法识别的样式,因此不费心去检查如果值在实际写出时需要包装在“url()”中。

HtmlTextWriterEx 不是最伟大的名字,但无论如何。根据您正在做的事情,您可能(?)需要在您的代码隐藏 System.Web.UI.Page 子类中执行类似的操作:

protected override HtmlTextWriter CreateHtmlTextWriter(TextWriter writer)
{
    return new HtmlTextWriterEx(writer);
}

这是类(class):

class HtmlTextWriterEx : HtmlTextWriter
{
    public HtmlTextWriterEx(TextWriter writer) 
        : this(writer, "\t")
    {
    }

    public HtmlTextWriterEx(TextWriter writer, string tabString)
        : base(writer, tabString)
    {

    }

    public override void AddStyleAttribute(string name, string value)
    {
        if (name.ToLower() == "background-image" && value.ToLower() == "none")
            base.AddStyleAttribute(name, value, ~HtmlTextWriterStyle.BackgroundColor);
        else
            base.AddStyleAttribute(name, value);
    }

    public override void AddStyleAttribute(HtmlTextWriterStyle key, string value)
    {
        if(key == HtmlTextWriterStyle.BackgroundImage && value.ToLower() == "none")
            base.AddStyleAttribute("background-image", value, ~HtmlTextWriterStyle.BackgroundColor);
        else
            base.AddStyleAttribute(key, value);
    }
}

关于ASP.Net 呈现的不正确的背景图像样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2530784/

相关文章:

css - 使用CSS切换元素顺序

css - 语法帮助 - 背景图像 Sprite css

javascript - 使用javascript在页面加载时加载css隐藏图像作为背景图像

java - 使用 Nimbus Look And Feel 时无法在 JTextArea 背景上绘制图像

c# - 创建 RTF 格式并打印为 PDF

asp.net - 使用 ASP.net/IIS 在本地主机中未显示 div 上的特定图像

c# - 如何在同一个网站调用一个webservice?

javascript - 使用javascript动态制作Html页面

javascript - AngularJS:从 DOM 中删除 HTML 元素,但不删除其内容

c# - "EndResponse"能否提高 ASP.Net 页面的性能