Master内使用FindControl找不到控件的解决方案

来源:互联网 发布:windows教育版 编辑:程序博客网 时间:2024/05/22 00:23

0、问题描述:已经在XXX.Master文件中定义了控件

<asp:LinkButton ID="lnk_new_user_after" runat="server" OnClick="lnk_new_user_Click" Visible="false">新增用户</asp:LinkButton>

但是在XXX.Master对应的代码文件XXX.master.cs的protected void Page_Load(object sender, EventArgs e)方法中使用

(LinkButton)FindControl("lnk_new_user_after")找到的却是空值


解决方案是:


1、在Web.config文件的<configuration>下的<system.web>配置节下添加配置

<trace enabled="true"/>


2、在浏览器中浏览人任意一个加载有XXX.Master的页面

之后在浏览器中输入:主机名/trace.axd(如:/http://localhost:12658/trace.axd)

这时会出现站点访问的详细信息如下:


点开其中的一次(包含加载有XXX.Master的那一次)请求,查看详细信息,结果如下:


查看控件树,可以看到,我们需要找的控件ID全名其实是


3、在代码里我们使用这个ID即可找到控件

(LinkButton)FindControl("ctl00$ctl14$lnk_new_user_after")

4、补充,在IE内核的浏览器内查看“应用程序记录”,可以在要查看的页面的<%@ Page%>内加上属性Trace="true",这样就可以在浏览该页时直接查看网页最底部即可看到跟踪信息,而不用在”对此应用程序的请求“表里面找了。

找到问题后记得将Web.config里的<trace enabled="true"/>和页面里的<%@ Page%>内属性Trace="true"去掉。


 


0 0