如何在代码隐藏页面中选择div元素?

时间:2013-10-09 06:54:34

标签: c# asp.net

我有一个div元素:

<div class="tab-pane active" id="portlet_tab1">

我想从代码隐藏页面控制此元素并删除“active”类

注意:

  • Div不包含runat="server"属性。

  • 这不是母版页文件,但这是另一个名为“AssignImages.aspx”的文件,它包含ContentPlaceHolder。

div位于此ContentPlaceHolder中:

<asp:Content ContentPlaceHolderID="ContentPlaceHolder1" runat="server" ID="Content1">  

6 个答案:

答案 0 :(得分:21)

如果要从后面的代码中找到控件,则必须在控件上使用runat="server"属性。然后你可以使用Control.FindControl

<div class="tab-pane active" id="portlet_tab1" runat="server">

Control myControl1 = FindControl("portlet_tab1");
if(myControl1!=null)
{
    //do stuff
}

如果您使用runat服务器并且您的控件位于ContentPlaceHolder内,您必须知道ctrl名称将不再是portlet_tab1。它将使用ctrl00格式呈现。

类似于:#ctl00_ContentPlaceHolderMain_portlet_tab1。如果使用jquery,则必须修改名称。

您也可以在客户端使用jQuery而不使用runat-server属性:

<script type='text/javascript'>

    $("#portlet_tab1").removeClass("Active");

</script>

答案 1 :(得分:5)

您需要将其强制转换为HtmlControl才能访问Style属性。

HtmlControl control = (HtmlControl)Page.FindControl("portlet_tab1"); control.Style.Add("display","none");

答案 2 :(得分:2)

@CarlosLanderas是正确的,具体取决于您放置DIV控件的位置。顺便说一下,DIV在技术上不是ASP控件,这就是为什么你不能像其他控件一样直接找到它。但最好的解决方法是将其变成ASP控件。

使用asp:Panel代替。无论如何它都被渲染成<div>标签......

<asp:Panel id="divSubmitted" runat="server" style="text-align:center" visible="false">
   <asp:Label ID="labSubmitted" runat="server" Text="Roll Call Submitted"></asp:Label>
</asp:Panel>

在代码背后,只需按照正常情况找到Panel控件......

Panel DivCtl1 = (Panel)gvRollCall.FooterRow.FindControl("divSubmitted");
if (DivCtl1 != null)
    DivCtl1.Visible = true;

请注意我已使用FooterRow作为我的&#34; psuedo div&#34;在Gridview控件的页脚行内。

良好的编码!

答案 3 :(得分:0)

您已使用以下代码将div设为服务器控件,

<div class="tab-pane active" id="portlet_tab1" runat="server">

然后可以在后面的代码中访问此div。

答案 4 :(得分:0)

id + runat =“ server”导致可在服务器上访问

答案 5 :(得分:-1)

IDrunat='server'属性设为:

<div class="tab-pane active" id="portlet_tab1" runat="server">

// somecode 代码隐藏:

访问

后面的代码
    Control Test = Page.FindControl("portlet_tab1");
    Test.Style.Add("display", "none"); 

    or 

    portlet_tab1.Style.Add("display", "none");