我有一个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">
答案 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)
将ID
和runat='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");