HTMLTextWriter.NET Reflectorのクラスとクラスのコードを見ると、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);
}
}