将CSS类添加到后面的代码中的div

Myw*_*rld 33 css c#

我有一个div,我试图在代码中添加一个CSS类,但我尝试时收到以下错误

Property or indexer 'System.Web.UI.HtmlControls.HtmlControl.Style' cannot be assigned to -- it is read only
Run Code Online (Sandbox Code Playgroud)

我使用以下代码:

protected void BTNEvent_Click(object sender, ImageClickEventArgs e)
{
    BtnventCss.Style= "hom_but_a";                 
}
Run Code Online (Sandbox Code Playgroud)

谁能帮帮我吗?

Cas*_*jne 49

如果:

 <asp:Button ID="Button1" runat="server" CssClass="test1 test3 test-test" />
Run Code Online (Sandbox Code Playgroud)

添加或删除类,而不是使用覆盖所有类

   BtnventCss.CssClass = "hom_but_a"
Run Code Online (Sandbox Code Playgroud)

保持HTML正确:

    string classname = "TestClass";

    // Add a class
    BtnventCss.CssClass = String.Join(" ", Button1
               .CssClass
               .Split(' ')
               .Except(new string[]{"",classname})
               .Concat(new string[]{classname})
               .ToArray()
       );

     // Remove a class
     BtnventCss.CssClass = String.Join(" ", Button1
               .CssClass
               .Split(' ')
               .Except(new string[]{"",classname})
               .ToArray()
       );
Run Code Online (Sandbox Code Playgroud)

这保证了

  • 原始的类名仍然存在.
  • 没有双重名字
  • 没有令人不安的额外空间

特别是当客户端开发在一个元素上使用多个类名时.

在您的示例中,使用

   string classname = "TestClass";

    // Add a class
    Button1.Attributes.Add("class", String.Join(" ", Button1
               .Attributes["class"]
               .Split(' ')
               .Except(new string[]{"",classname})
               .Concat(new string[]{classname})
               .ToArray()
       ));

     // Remove a class
     Button1.Attributes.Add("class", String.Join(" ", Button1
               .Attributes["class"]
               .Split(' ')
               .Except(new string[]{"",classname})
               .ToArray()
       ));
Run Code Online (Sandbox Code Playgroud)

你应该将它包装在方法/属性中;)

  • 只是指出,如果在调用Button1.Attributes ["class"]时按钮没有设置类,则返回null. (2认同)

Vin*_*B R 31

<div runat="server">映射到a HtmlGenericControl.尝试使用BtnventCss.Attributes.Add("class", "hom_but_a");


Joe*_*zer 7

样式属性获取所有级联样式表(CSS)属性的集合; 你不能设置它.

试试吧BtnventCss.CssClass = "hom_but_a";.

我假设BtnventCss是一个WebControl.

我刚看到你可能正在使用 <div runat="server"...

如果是这样,您可以尝试:

BtnventCss.Attributes.Add("class", "hom_but_a");
Run Code Online (Sandbox Code Playgroud)

您可以将div 设为asp:panel - 它们将呈现相同的内容,您将获得更好的服务器端支持.


Vai*_*ran 5

对于非ASP.NET控件,即HTML控件等div, table, td, tr,您需要首先使它们成为服务器控件,分配ID,然后从服务器代码中分配属性:

ASPX页面

<head>
    <style type="text/css">
        .top_rounded
        {
            height: 75px;
            width: 75px;
            border: 2px solid;
            border-radius: 5px;
            -moz-border-radius: 5px; /* Firefox 3.6 and earlier */
            border-color: #9c1c1f;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div runat="server" id="myDiv">This is my div</div>
    </form>
</body>
Run Code Online (Sandbox Code Playgroud)

CS页面

myDiv.Attributes.Add("class", "top_rounded");
Run Code Online (Sandbox Code Playgroud)

  • 这似乎取代了所有课程,而不仅仅是添加一个 (3认同)