【问题标题】:Adding class attribute from code behind从后面的代码中添加类属性
【发布时间】:2011-11-26 06:16:12
【问题描述】:

我有以下代码:

div1.Attributes.Add("class", "displayNone");

它适用于page load,但不适用于OnClick 事件。

这是因为我的 html <div id="div1"></div> 似乎更改为:

<div id="div1_ucSomeControl_SoemthingElse"></div>

页面渲染后。

我该如何解决这个问题?

【问题讨论】:

    标签: c# asp.net html ajax


    【解决方案1】:

    在这种情况下,我认为控件的 ID 并不重要。您可能会遇到此问题,因为 class 属性已存在。试试这个:

    div1.Attributes["class"] = "displayNone";
    

    【讨论】:

    • 这确实有效,我很惊讶这对div1.Attributes.Add("class", "displayNone"); 有效,谢谢:D!!
    • 正如我所说,我相信您遇到了这个问题,因为类属性已经存在,并且您正在添加另一个类属性而不是更新现有的。
    【解决方案2】:
    <div id="div1" runat ="server">
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
    </div>
    

    后面的代码:

    protected void Button1_Click(object sender, EventArgs e)
    {
        div1.Attributes.Add("class", "displayNone");
    }
    

    这会奏效的。

    【讨论】:

      【解决方案3】:

      通常你应该在 Page_PreRender 事件中做这种属性处理/添加:

      div1.Attributes.Add("class", "displayNone");
      

      无论如何,当您说它在 OnClick 事件中不起作用时,我猜您仍然是指服务器端;因为在客户端你不能以这种方式执行该代码。

      服务器端,像div1 这样的ID 使用对象应该始终有效,在代码隐藏对象的ID 不会在整个页面生命周期中更改。

      【讨论】:

      • hmmz 我在服务器端使用更新面板进行部分回发。
      猜你喜欢
      • 1970-01-01
      • 2014-06-14
      • 2013-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多