Глядя на код для классов HTMLTextWriter
и CssTextWriter
в .NET Reflector, я могу думать только о том, чтобы создать подкласс 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);
}
}