温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

asp.net 关于提示“当前上下文中不存在名称"XXX"”的一种情况的解决办法

发布时间:2020-07-26 12:57:22 来源:网络 阅读:4802 作者:我不会抽烟 栏目:编程语言

今天遇到了一个问题,用了很多方法去找原因,最后终于发现了问题的所在。

出现的提示就是标题上写的:“当前上下文中不存在名称"XXX"”

我开始一直以为是我自定义控件引用的时候出现了问题,因为报错上写的名称我在前台中都能找到相应的ID,这可是好几百个啊,不可能我写错ID的问题,因为我是复制的。所以我以为是在编译这之前的某处出现了问题,一上午就围绕着自定义控件去排查了,事实证明我的反应还是有点慢半拍。

下午的时候我放弃了排查自定义控件,而是转到了前台,因为之前有一个很庞大的<table>,因为项目需要,我把整个<table>放入了<asp:Repeater>里,当前,如果要想使用<asp:Repeater>的话,当然要使用<ItemTemplate>这个标签(具体的Repeater控件如何使用,在我前一篇文章里有写),后来总之我就排除了所有其它可能影响的因素,只在<table>外面加了一个<asp:Repeater><ItemTemplate>,最后编译的时候仍然报本文的错误,到这我只能认为确实是如报错所述的“找不到名称”。找问题的过程就是这么纠结的,我也是在刚才快下班的时候才最终找到,解决的。

解决办法就是一切包含在<ItemTemplate>这类标签里的控件,如果你想在后台引用其ID的话,必须利用FindControl()这个方法,举个例子:

<asp:Repeater ID="Repeater1" runat="server" >
<ItemTemplate>
   <table id="Table1" >
   <tr >
   <td><asp:label id="label1" runat="server" /> </td>
   </tr >
   </table>
</ItemTemplate>
</asp:Repeater>

这样一个前台代码,如果想在后台给label1这个控件赋值的话,需要如下的引用方法:


((Label)Repeater1.Items[0].FindControl("label1")).Text = "可以正确赋值";


出现这个问题的原因可能很多,我这里只是其中一种,总之无论遇到什么问题,大家都要安下心来,多去尝试,最后总会解决的。


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI