4

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

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

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

background-image:url(none)

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

4

2 回答 2

1

查看 .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 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);
    }
}
于 2010-03-27T22:15:28.490 回答
1

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

.noimage { background-image: none; }

然后,您可以添加 CssClass,而不是在后面的代码中添加样式属性。

于 2010-03-27T22:16:15.817 回答