让 user control 中的 Button 也能启用验证

(本帖在版工的旧 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 撰写)。 

figure1 
图 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)」以便处理事件,如下列语法所示:

 

//  eventObject.someEvent += delegate() { 
//         在此区块中做一些自订的处理,如本帖下载示例中的验证、存储工作 
// };

//  Create a handler for a 「SendMessage1」 event in user control
//  C# 2.0 特有的「匿名方法 (anonymous method)」,可把整个 { }; 的
// 大括号 block 中的全部代码,都当作参数做传递

ExpandedBlockStart.gifContractedBlock.gif
UcAuthBtnNew1.SendMessage1  +=   delegate ( string  message)  {
  Page.Validate();

ExpandedSubBlockStart.gifContractedSubBlock.gif  
if (Page.IsValid) {
    
// 在这做各个页面的「新增、存储、修改」或各页中的专属动作
  }

}
;

-------------------------------------------------
 本帖的示例源码下载点:
 http://files.cnblogs.com/WizardWu/070725.zip
 
 (执行本范例,不用数据库)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值