(本帖在版工的旧 Blog 中,发表日期为 2007/07/25)
User control (使用者控件) 可提升 ASP.NET 中操作界面与功能的复用性,尤其在 ASP.NET 2.0 中的使用机率比过去 ASP.NET 1.x 更高。日前版工做 project 遇到,需要把「储存、新增、修改」等 ImageButton 放在 user control 中,以便让各个页面中,可拖曳重复引用。但各个页面中的「验证控件」、验证用 JavaScript 和 Regular Expression,在按下 user control 中的「存储」ImageButton 送出后,默认并无法将未完成验证的请求阻挡下来;亦即就算使用者输入的数据不合法或未输入,「验证控件」中虽捉得到错误,但仍会被送至后台 server 去处理。因此版工在页面后台的代码中做了些判断,并开放此使用到「委托 (delegate)」和 Button-click 事件触发 (raise event)、C# 2.0 匿名方法的示例下载 (使用 C# / ASP.NET 2.0 撰写)。
图 1 本帖的 ASP.NET 2.0 示例执行画面
另请注意,delegate 和页面的 event raising,在 VB.NET 和 C# 中的语法不大相同。VB.NET 在 user control 中建立 event 时,VB compiler 会自动建立 delegate 去「处理事件 (handle event)」,反观 C# 就需要程序员自行建立 delegate;但当引用 user control 的页面中,在响应或处理被触发的 event 时 (如本帖下载示例的 CustomMessage.showMsg(this.Page, message); ),VB.NET 则需要程序员自行撰写事件处理例程,而 C# 在 2.0 版中则提供了「匿名方法 (anonymous method)」以便处理事件,如下列语法所示:














-------------------------------------------------
本帖的示例源码下载点:
https://files.cnblogs.com/WizardWu/070725.zip
(执行本范例,不用数据库)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)