博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
asp.net 关于提示“当前上下文中不存在名称"XXX"”的一种情况的解决办法
阅读量:6298 次
发布时间:2019-06-22

本文共 1066 字,大约阅读时间需要 3 分钟。

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

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

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

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

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

1
2
3
4
5
6
7
8
9
<
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这个控件赋值的话,需要如下的引用方法:

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

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

本文转自 我不会抽烟 51CTO博客,原文链接:http://blog.51cto.com/zhouhongyu1989/1302881,如需转载请自行联系原作者
你可能感兴趣的文章
DWR实现服务器向客户端推送消息
查看>>
js中forEach的用法
查看>>
Docker之功能汇总
查看>>
!!a标签和button按钮只允许点击一次,防止重复提交
查看>>
(轉貼) Eclipse + CDT + MinGW 安裝方法 (C/C++) (gcc) (g++) (OS) (Windows)
查看>>
还原数据库
查看>>
作业调度框架 Quartz.NET 2.0 beta 发布
查看>>
mysql性能的检查和调优方法
查看>>
项目管理中的导向性
查看>>
Android WebView 学习
查看>>
(转)从给定的文本中,查找其中最长的重复子字符串的问题
查看>>
HDU 2159
查看>>
spring batch中用到的表
查看>>
资源文件夹res/raw和assets的使用
查看>>
UINode扩展
查看>>
LINUX常用命令
查看>>
百度云盘demo
查看>>
概率论与数理统计习题
查看>>
初学structs2,简单配置
查看>>
Laravel5.0学习--01 入门
查看>>