Удалите класс CSS из элемента HTML в файле, находящемся за кодом

У меня на моем интерфейсе/веб-форме есть следующее:

<div id="mydiv" class="forceHeight" runat="server" />

Теперь у меня есть условие в моем коде, где, если определенная ситуация истинна, мне нужно удалить класс forceHeight из этого элемента управления. Я знаю, что в С# вы можете использовать:

mydiv.CssClass.Replace("forceHeight", ""); 

Я не уверен, как вы это делаете с помощью VB? Intellisense не предлагает мне этот вариант?

Любые идеи кто-нибудь?

Ответ 1

Это удалит все классы CSS из div с ID="mydiv"

Me.mydiv.Attributes("class") = ""

Ответ 2

Как удалить один класс CSS из объекта с помощью .NET

Если объект имеет несколько классов, вы можете удалить один из этих классов, отредактировав строку класса. Оба эти метода требуют присвоения идентификатора элементу HTML, чтобы вы могли указать его в коде.

<asp:Panel ID="mydiv" CssClass="forceHeight class2 class3" runat="server" />

VB.NET

mydiv.CssClass = mydiv.CssClass.Replace("forceHeight", "").Trim()

С#

mydiv.CssClass = mydiv.CssClass.Replace("forceHeight", "").Trim();

ИЛИ используя общий контроль HTML

<div id="mydiv" class="forceHeight class2 class3" runat="server" />

VB.NET

mydiv.CssClass = mydiv.CssClass.Replace("forceHeight", "").Trim()

С#

mydiv.Attributes["class"] = mydiv.Attributes["class"].Replace("forceHeight", "").Trim();

Опциональная Trim для удаления пробела.


Как удалить ВСЕ классы CSS из объекта с помощью .NET

VB.NET

mydiv.Attributes("class") = ""

С#

mydiv.Attributes["class"] = "";

Удалит атрибут класса из объекта.

Ответ 3

Me.mydiv.Attributes.Remove("class")

намного лучше, так как он не оставит позади. Он создаст более чистый HTML-тег.

<div id="mydiv"></div>

Если вы используете это,

Me.mydiv.Attributes("class") = ""

он произведет это вместо

<div id="mydiv" class=""></div> ИЛИ <div id="mydiv" class></div>

Ответ 4

Мне лучше использовать замену REGEX, поскольку замена класса может существовать как частичное имя в других классах, которые могли бы их разбить. Поэтому я использую следующий метод расширения:

public static void RemoveClass(this WebControl control, string classToRemove)
{
    if (control == null)
        return;

    control.CssClass = Regex.Replace(control.CssClass, @"(^|\s)" + classToRemove + @"($|\s)", " ");
}

Ответ 5

mydiv.Attributes["class"] = mydiv.Attributes["class"].ToString().Replace("ClassName","")