FindControl 用于在使用母版页的页面上查找控件
FindControl for finding control on page that uses master page
我有这个使用母版页的 aspx
:
<asp:Content ID="Content1" ContentPlaceHolderID="content" runat="server">
<div class="mlists">
<a href="?"><img id="i1" src="../img/1.png" runat="server" alt="1"/></a>
<a href="?"><img id="i2" src="../img/2.png" runat="server" alt="2"/></a>
<a href="?"><img id="i3" src="../img/3.png" runat="server" alt="3"/></a>
</div>
</asp:Content>
但我无法使用此代码访问图像控件:
var control = FindControl("Content1").FindControl("i2");
((HtmlImage)control).Src = "../img/x.png";
和
Object reference not set to an instance of an object.
发生错误,因为 FindControl("Content1")
returns null
。请注意,此代码 returns null
:
var control = FindControl("i2");
// Get a reference to the master page
MasterPage ctl00 = FindControl("ctl00") as MasterPage;
// Get a reference to the ContentPlaceHolder
ContentPlaceHolder mainContent = ctl00.FindControl("MainContent") as ContentPlaceHolder;
// Get a reference to the Repeater
Repeater repeater = mainContent.FindControl("Repeater1") as Repeater;
This is how i get to a repeater control in a working application.
Follow this pattern you can get anything in your master page and even content page
您无法访问内容,请参考this question。
也许,您想将 "runat=server" 添加到 div 并访问 ImageControls。
<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="content">
<div class="mlists" runat="server" id="div">
<a href="?"><img id="i1" src="../img/1.png" runat="server" alt="1"/></a>
<a href="?"><img id="i2" src="../img/2.png" runat="server" alt="2"/></a>
<a href="?"><img id="i3" src="../img/3.png" runat="server" alt="3"/></a>
</div>
</asp:Content>
然后像这样在代码后面访问控制:
var control = div.FindControl("i2");
((HtmlImage)control).Src = "../img/x.png";
我有这个使用母版页的 aspx
:
<asp:Content ID="Content1" ContentPlaceHolderID="content" runat="server">
<div class="mlists">
<a href="?"><img id="i1" src="../img/1.png" runat="server" alt="1"/></a>
<a href="?"><img id="i2" src="../img/2.png" runat="server" alt="2"/></a>
<a href="?"><img id="i3" src="../img/3.png" runat="server" alt="3"/></a>
</div>
</asp:Content>
但我无法使用此代码访问图像控件:
var control = FindControl("Content1").FindControl("i2");
((HtmlImage)control).Src = "../img/x.png";
和
Object reference not set to an instance of an object.
发生错误,因为 FindControl("Content1")
returns null
。请注意,此代码 returns null
:
var control = FindControl("i2");
// Get a reference to the master page
MasterPage ctl00 = FindControl("ctl00") as MasterPage;
// Get a reference to the ContentPlaceHolder
ContentPlaceHolder mainContent = ctl00.FindControl("MainContent") as ContentPlaceHolder;
// Get a reference to the Repeater
Repeater repeater = mainContent.FindControl("Repeater1") as Repeater;
This is how i get to a repeater control in a working application.
Follow this pattern you can get anything in your master page and even content page
您无法访问内容,请参考this question。
也许,您想将 "runat=server" 添加到 div 并访问 ImageControls。
<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="content">
<div class="mlists" runat="server" id="div">
<a href="?"><img id="i1" src="../img/1.png" runat="server" alt="1"/></a>
<a href="?"><img id="i2" src="../img/2.png" runat="server" alt="2"/></a>
<a href="?"><img id="i3" src="../img/3.png" runat="server" alt="3"/></a>
</div>
</asp:Content>
然后像这样在代码后面访问控制:
var control = div.FindControl("i2");
((HtmlImage)control).Src = "../img/x.png";