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

简介:

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

出现的提示就是标题上写的:“当前上下文中不存在名称"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,如需转载请自行联系原作者

目录
相关文章
|
开发框架 .NET 数据库
.NETCore 获取数据库上下文[实例的方法和配置连接字符串
.NETCore 获取数据库上下文[实例的方法和配置连接字符串
704 1
|
JSON 开发框架 前端开发
ASP.NET MVC中JSON强制小写属性名称
首先需要引用Newtonsoft.Json using Newtonsoft.Json; using Newtonsoft.Json.Serialization; 然后转换对象 Model.JsonResult jsonResult = new Model.
894 0
|
前端开发 .NET API
如何解决Asp.Net MVC和WebAPI的Controller名称不能相同的问题
原文:如何解决Asp.Net MVC和WebAPI的Controller名称不能相同的问题 1、问题描述 假如有一个文章的业务(Article),我们在 Controllers文件夹中创建MVC Controller和Api Controller,各个Controller中都有相同的获取文章内容的Action(Content)。
1437 0
|
.NET 数据库 开发框架
ASP.NET Core 数据库上下文 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 数据库上下文 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 数据库上下文 上一章节中我们了解了 Entity Framework 并讲述了如何配置它。
1785 0
|
.NET 开发工具
ASP.Net Core 运行错误 Http Error 502.5 解决办法
Http Error 502.5 - Process Failure 错误信息.png 如果你看到上面这张图片了的话,说明你在本地运行的时候报错了。
4430 0