14

我有一个 div 元素:

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

我想从代码隐藏页面控制这个元素并删除“活动”类

笔记:

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

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

div 在这个 ContentPlaceHolder 内:

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

6 回答 6

24

如果要从后面的代码中找到控件,则必须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>
于 2013-10-09T07:00:39.207 回答
8

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

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

于 2017-01-10T10:33:47.420 回答
3

@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,因为我的“伪 div”位于 Gridview 控件的页脚行内。

好编码!

于 2016-01-08T00:51:42.790 回答
0

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

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

那么这个 div 将可以在后面的代码中访问。

于 2013-10-09T06:58:58.337 回答
0

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

于 2019-01-21T10:50:31.550 回答
-1

给出ID和属性runat='server'为:

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

//一些代码代码隐藏:

访问后面的代码

    Control Test = Page.FindControl("portlet_tab1");
    Test.Style.Add("display", "none"); 

    or 

    portlet_tab1.Style.Add("display", "none"); 
于 2013-10-09T07:03:04.780 回答