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

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


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值