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"去掉。