ASP.Net渲染的背景图像样式不正确

ASP.Net渲染的背景图像样式不正确,asp.net,css,background-image,Asp.net,Css,Background Image,使用ASP.Net,我有一个服务器控件,我想为它添加内联css样式“background image:none”。然而,当我打电话时: writer.AddStyleAttribute("background-image", "none"); 生成以下内联样式(并尝试解析url“无”): 是否有一种特殊的语法可以用来将背景图像设置为none inline?查看.NET Reflector中HTMLTextWriter和CssTextWriter类的代码,我唯一能想到的就是对HTMLTextWr

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

writer.AddStyleAttribute("background-image", "none");
生成以下内联样式(并尝试解析url“无”):


是否有一种特殊的语法可以用来将背景图像设置为none inline?

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

“Binary不是样式枚举中的第一个元素”
~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);
    }
}

您可以尝试将CSS类添加到页面中,例如

.noimage { background-image: none; }
然后,您可以添加CssClass,而不是在代码中添加style属性

.noimage { background-image: none; }