• 让 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 中的全部代码,都当作参数做传递

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

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

    }
    ;

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

  • 相关阅读:
    MS CRM 2011 RC中的新特性(4)——活动方面之批量编辑、自定义活动
    最近的一些有关MS CRM 2011的更新
    MS CRM 2011 RC中的新特性(6)——连接
    MS CRM 2011 RC中的新特性(7)—仪表板
    参加MS CRM2011深度培训课程——第一天
    MS CRM 2011插件调试工具
    MS CRM2011实体介绍(四)——目标管理方面的实体
    MS CRM 2011 RC中的新特性(3)——客户服务管理方面
    MS CRM 2011 RC中的新特性(8)—数据管理
    ExtAspNet 登陆
  • 原文地址:https://www.cnblogs.com/WizardWu/p/1247034.html
Copyright © 2020-2023  润新知