如何在代码后面访问span类?

时间:2014-06-05 16:09:32

标签: c# html asp.net

是否可以根据类别显示/隐藏代码隐藏? 我已经能够使用span的id而不是类。

标记:

<span runat='server' id='myId' class='myClass'>some text</span>

代码隐藏:

protected override void OnPreRender(EventArgs e)
{
    // This works
    myId.Visible = false;

    // This doesn't work
    myClass.Visible = false;
}

我收到错误&#34; myClass名称在当前上下文中不存在&#34;。 但是代码隐藏与id没有问题。

3 个答案:

答案 0 :(得分:2)

不,没有任何东西可以让你按类别引用某些东西;只有ID实际上在代码隐藏中有效。您可以通过ID找到对象,然后检查它的类,或者您可以围绕某些内容定义容器控件:

<asp:Panel ID="X" runat="server">
.
.
</asp:Panel>

使用此功能,您可以遍历面板中的控件,检查类并处理它,如:

foreach (var c in X.Controls)
{
   if (c is WebControl && ((WebControl)c).CssClass == "myClass")
      //Do something
   else if (c is HtmlControl && ((HtmlControl)c).Attributes.ContainsKey("class") && ((HtmlControl)c).Attributes["class"] == "myClass")
      //Do something

}

这是可能的。您也可以在页面级别执行此操作,但必须以递归方式执行此操作,这可能会影响您的应用程序性能。

答案 1 :(得分:0)

您可以尝试这样的事情:

<span runat='server' id='myId' class='myClass'>some text</span>
    ...
</span>


myId.Attributes.Add("style", "display:none;");

答案 2 :(得分:0)

当然不会。您正在使用班级名称作为Id。

您可以使用Page对象上的Contols Collection选择控件。

foreach (Control c in Page.Controls)
    {
            if (c.CssClass == "myClass")
            {
                c.Visible=false;
            }
    }