Неправильный стиль фонового изображения в ASP.Net - PullRequest
4 голосов
/ 27 марта 2010

Используя ASP.Net, у меня есть серверный элемент управления, для которого я хотел бы добавить встроенный стиль CSS "background-image: none". Однако, когда я звоню:

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

Создается следующий встроенный стиль (и он пытается разрешить URL «none»):

background-image:url(none)

Существует ли специальный синтаксис, который я могу использовать, чтобы установить фоновое изображение на нет?

Ответы [ 2 ]

1 голос
/ 28 марта 2010

Вы можете попробовать добавить класс CSS на свою страницу, например

.noimage { background-image: none; }

Тогда вместо добавления атрибута стиля в ваш код вы можете добавить CssClass.

1 голос
/ 28 марта 2010

Глядя на код для классов 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);
    }
}
...