使用ASP.Net,我有一個服務器控件,我想添加內聯CSS樣式「background-image:none」。然而,當我打電話:ASP.Net呈現不正確的背景圖像樣式
writer.AddStyleAttribute("background-image", "none");
以下內嵌樣式生成(並試圖解析URL「無」):
background-image:url(none)
是否有一個特殊的語法,我可以用它來設置背景圖像沒有內聯?
使用ASP.Net,我有一個服務器控件,我想添加內聯CSS樣式「background-image:none」。然而,當我打電話:ASP.Net呈現不正確的背景圖像樣式
writer.AddStyleAttribute("background-image", "none");
以下內嵌樣式生成(並試圖解析URL「無」):
background-image:url(none)
是否有一個特殊的語法,我可以用它來設置背景圖像沒有內聯?
看看.NET Reflector中的HTMLTextWriter
和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);
}
}
你可以嘗試添加一個CSS類到你的頁面如
.noimage { background-image: none; }
然後,而不是在你的代碼中添加樣式屬性,你可以添加CssClass。