4

ASP.Netを使用して、インラインcssスタイル「background-image:none」を追加したいサーバーコントロールがあります。しかし、私が電話するとき:

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

次のインラインスタイルが生成されます(そしてURL「none」を解決しようとします):

background-image:url(none)

背景画像をインラインなしに設定するために使用できる特別な構文はありますか?

4

2 に答える 2

1

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);
    }
}
于 2010-03-27T22:15:28.490 に答える
1

次のようなCSSクラスをページに追加してみてください。

.noimage { background-image: none; }

次に、コードビハインドにスタイル属性を追加する代わりに、CssClassを追加できます。

于 2010-03-27T22:16:15.817 に答える