使用 ASP.Net,我有一个服务器控件,我想为其添加内联 css 样式“background-image:none”。但是,当我打电话时:
writer.AddStyleAttribute("background-image", "none");
生成以下内联样式(并尝试解析 url“none”):
background-image:url(none)
我可以使用特殊语法将背景图像设置为无内联吗?
最佳答案
查看 .NET Reflector 中 HTMLTextWriter
和 CssTextWriter
类的代码,我唯一能想到的就是自己对 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/