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

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

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

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

background-image:url(none)

是否有一种特殊的语法可用于将背景图像设置为无内联?

最佳答案 查看.NET Reflector中HTMLTextWriter和CssTextWriter类的代码,我唯一能想到的就是自己子类化HTMLTextWriter.

“二进制不是样式枚举中的第一个元素”,~HtmlTextWriterStyle.BackgroundColor,它用于任何名称无法识别的样式,因此无需检查值是否需要包含在“url()中” “当它实际写出来的时候.

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

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

这是班级:

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);
    }
}
点赞