随笔 - 37  文章 - 0  评论 - 150  阅读 - 29万

[ASP.NET]获取用户控件对象的引用

如果在aspx页面中使用了用户控件,很有可能需要获取对这个控件对象的引用,来执行某些操作。获取控件引用的方法一般都是调用FindControl方法,不过这个方法返回的是Object类型,还需要进行强制类型转换。于是,问题来了:如何获取用户控件的类型?

在第一次实践中,我使用的是ASP命名空间中自动生成的类型。例如,我创建了一个名为VictoryForceLabel.ascx的用户控件,在ASP命名空间中就会自动生成一个controls_victoryforcelabel_ascx的类型。于是获取用户控件引用的语句如下:

ASP.controls_victoryforcelabel_ascx victoryForceLabel = (ASP.controls_victoryforcelabel_ascx)this.FindControl("VicctoryForceLabel");

这在测试的时候完全没有问题,一切正常。可是一旦发布网站,总是会出现一条错误消息:

命名空间“ASP”中不存在类型或命名空间名称“controls_victoryforcelabel_ascx”(是否缺少程序集引用?)

这个错误很让人困惑,在网上搜了一下,发现是使用了错误的类型。其实用户控件的类型并不是ASP命名空间中自动生成的那个,而是在控件代码文件中的类型。对于上述用户控件,这个类型是VictoryForceLabel.ascx.cs文件中定义的类Controls_VictoryForceLabel。把类型替换后,发布成功。

至于ASP命名空间中自动生成的类型有什么用,为什么测试的时候一切正常,回答这些问题有待更深入的学习。

posted on   Zplutor  阅读(2402)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
< 2009年9月 >
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 1 2 3
4 5 6 7 8 9 10

点击右上角即可分享
微信分享提示