通过后面的aspx代码添加css类

Dan*_*Dan 54 css asp.net class code-behind

我正在使用aspx.如果我有HTML如下:

<div id="classMe"></div>
Run Code Online (Sandbox Code Playgroud)

我希望通过代码隐藏文件动态添加一个css类,即在Page_Load上.可能吗?

Chr*_*aas 108

如果要添加属性(包括类),则需要runat="server"在标记上进行设置.

    <div id="classMe" runat="server"></div>
Run Code Online (Sandbox Code Playgroud)

然后在代码隐藏中:

classMe.Attributes.Add("class", "some-class")
Run Code Online (Sandbox Code Playgroud)

  • 如果你想保留现有的类,你需要做类似的事情:`classMe.Attributes.Add("class",classMe.Attributes ["class"] +"some-class"`不要覆盖你已有的 (24认同)
  • 我不确定我是否遗漏了一些东西,但是如果你在初始div上有一个类(例如``<div id ="classMe"runat ="server"class ="original"> </ div>`,原始的类声明被删除了,你只剩下`class ="some-class"`使用上面的代码....似乎与@ chris-haas的最后评论相矛盾 (4认同)
  • @DevDave这会覆盖现有的类,因为您正在更改整个类属性.这与javascript中的[setAttribute](https://developer.mozilla.org/en-US/docs/Web/API/element.setAttribute)相同."添加新属性或更改现有属性的值" (2认同)

Jas*_*son 17

如果你没有使用id除了代码隐藏引用之外的任何东西(因为.net破坏了id),你可以使用一个panel控件并在你的代码隐藏中引用它:

<asp:panel runat="server" id="classMe"></asp:panel>

classMe.cssClass = "someClass"
Run Code Online (Sandbox Code Playgroud)


Mar*_*377 5

假设您的div已经有一些CSS类...

<div id="classMe" CssClass="first"></div>
Run Code Online (Sandbox Code Playgroud)

以下内容不会取代现有的定义:

ClassMe.CssClass += " second";
Run Code Online (Sandbox Code Playgroud)

如果您不确定直到最后一刻...

string classes = ClassMe.CssClass;
ClassMe.CssClass += (classes == "") ? "second" : " second";
Run Code Online (Sandbox Code Playgroud)