2010-03-27 77 views
4

使用ASP.Net,我有一個服務器控件,我想添加內聯CSS樣式「background-image:none」。然而,當我打電話:ASP.Net呈現不正確的背景圖像樣式

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

以下內嵌樣式生成(並試圖解析URL「無」):

background-image:url(none) 

是否有一個特殊的語法,我可以用它來設置背景圖像沒有內聯?

回答

1

看看.NET Reflector中的HTMLTextWriterCssTextWriter類的代碼,我能想到的唯一事情就是自己繼承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); 
    } 
} 
1

你可以嘗試添加一個CSS類到你的頁面如

.noimage { background-image: none; } 

然後,而不是在你的代碼中添加樣式屬性,你可以添加CssClass。