遭遇ASP类的事件设计

作者的blog: http://blog.csdn.net/oyiboy/
我之所以还是要宣扬用MVC来开发ASP,只是想让面向过程的思考方式变成面向对象的思考方式,这个对于任何一种语言的开发员来说都是有好处的。
MVC是个标准模型,ASP要实现似乎真的是很困难,但是标准是标准,运用是运用,既然ASP要实现这个模型很难,那可以尝试着将MVC模型变形成适合自己的模型。
  “不管白猫黑猫能逮到耗子的就是好猫。”而对于我们开发者来说,不管是什么模型,能正确的指引我们的思路,完美完成项目的模型就是好模型。毕竟用户最终用是我们的程序而不是我们的模型。
  这段时间由于接触到MVC,也知道了Class的运用方式,遭遇到了事件的设计。
  其实具体的事件设计方式我也不是很明白,在QQ里newskyline跟我说了,ASP没办法作Class的事件,
只能模拟。而我呢。算是为达目的不则手段(写程序而以)的,认为模拟也好,非模拟也行,只要达到我想要的效果就是好东西。
  模拟事件的方式有两种:
  第一种:借用了execute/eval,用一个属性收取函数名的字符,然后使用execute/eval来运行函数。
    如:
      obj.OnDataUpdateStart="CheckData"
     其构造为:
      public property let OnDataUpdateStart(byval A_strValue)
      ''在此省略了对A_strValue的一些严谨的验证代码。
        p_strOnDataUpdateStart=A_strValue
      end property
    
     事件是触发为:
      public sub DataUpdate()
        ''...忽略过程...
        execute(p_strOnDataUpdateStart & "(参数变量一,参数变量二)")
        ''...忽略过程...
      end sub
    稍微提一下execute和eval的不同点。
    同样的“x=y”。execute("x=y")的结果是将y值赋给x,而eval("x=y")则会返回一个Boolean值,表示x与y的测试结果,如x等于y则返回true,反之返回false。
  第二种:借用函数指针GetRef,在vbs手册的解释上来看就是绑定事件专用的函数。具体解释如下:
    “返回一个指向一过程的引用,此过程可绑定某事件。”
    具体运用例子,如:
      obj.OnDataUpdateStart="CheckData"
      其构造则改为:
        public OnDataUpdateStart  ''其实可以使用get/let模式,想偷懒了,所以直接声明一个公开变量来传递了。
      事件触发则改为:
        public sub DataUpdate()
          ''...忽略过程...
          set me.OnDataUpdateStart=GetRef(OnDataUpdateStart)
          me.OnDataUpdateStart("参数变量一","参数变量二")
          ''...忽略过程...
        end sub
  以上两种方式可以实现事件绑定,但是,从解释上来说,我比较推崇第二种,相对于execute/eval来说更为严谨一些。

(0)

相关推荐

  • 遭遇ASP类的事件设计

    作者的blog: http://blog.csdn.net/oyiboy/ 我之所以还是要宣扬用MVC来开发ASP,只是想让面向过程的思考方式变成面向对象的思考方式,这个对于任何一种语言的开发员来说都是有好处的. MVC是个标准模型,ASP要实现似乎真的是很困难,但是标准是标准,运用是运用,既然ASP要实现这个模型很难,那可以尝试着将MVC模型变形成适合自己的模型. "不管白猫黑猫能逮到耗子的就是好猫."而对于我们开发者来说,不管是什么模型,能正确的指引我们的思路,完美完成项目的模型就

  • Asp类 的数据库领域

    奶奶的,Asp类 是真不好学啊,看着简单,可真到用的时候,网上的代码是都报错啊!! 郁闷了恩久!! 3天了,终于调试出来了,一个简单的 数据库类模型,不敢独享,拿出来大家分享吧!本作品 归 站长中国 www.zzcn.net 彭彭所有 ,你们拷贝的时候不许去掉版权,否则拷贝的人全家死光光!!!!呵呵..:) 复制代码 代码如下: <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLI

  • 如何编写一个ASP类

    前几天大佛写了"ASP设计模式",可能有些初学者或者刚刚接触ASP的朋友不一定完全看得明白,偶就整理了一下编写一个ASP类的方法,大部分是从网上找来的.希望对朋友们有帮助.  <ASP设计模式>(作者 我佛山人): dispbbs.asp?boardID=20&ID=247879 首先ASP的类是由事件和方法(它们就是构成类的成员了)构成的,如果大家还没有接触过,可以先看看下面的说明: 在 Class 块中,成员通过相应的声明语句被声明为 Private(私有成员,

  • ASP.NET中事件如何依次发生?

    本文通过实战的方法简单介绍ASP.NET中的事件执行顺序. 方法/步骤 新建C# WebForm项目,如下图: 在Defualt.aspx文件中添加一个Button控件并命名为Button1,然后为该控件各个事件添加事件处理程序,并添加断点,如下图: 打开Global.asax文件并添加断点,如下图: 打开Site.Master的代码文件Site.Master.cs,并添加断点,如下图: 按F5调试运行,查看代码运行顺序:Application_Start→Session_Start→Butto

  • ASP 类专题

    严格地说,ASP 并不是一门编程语言,所以不存在类这一概念,我们这里说 ASP 类是指 ASP 的编程语言 VBScript 在 ASP 里应用时的类. ASP 类比较简单,它不具有真正意义类的继承.重载等特性,尽管如此,它仍然是非常有用的,它降低了我们编程的复杂度,使我们的程序模块更加合理. ASP 类支持什么 ASP 类比较简单,它不具有真正意义类的继承.重载等特性.它支持以下内容:  公有成员变量.私有成员变量.属性  公有成员函数.私有成员函数  构造函数.析构函数  创建和使用一个最简

  • ASP 类 Class入门 推荐

    Class 声明 声明一个类的名字,就是定义一些变量,属性,方法来组成一个类.我们常常看到别的程序语言中中都有类的说明,PHP,VB,C++,这个在VBScript中的类的说明,我是第一次听到,我们的日常工作就是网站开发,在这个里面多多少少搞出点经验,像模像样也能自诩为"内行",所以我就来分享一下我所知道的这个新的东东.我们来看看下面的这个代码吧!(window2000+IIS5.0通过测试) 类的定义1 yyh.asp<%''声明一个名为yh的类 Class yh Privat

  • ES6中javascript实现函数绑定及类的事件绑定功能详解

    本文实例讲述了ES6中javascript实现函数绑定及类的事件绑定功能的方法.分享给大家供大家参考,具体如下: 函数绑定 箭头函数可以绑定this对象,大大减少了显式绑定this对象的写法(call.apply.bind).但是,箭头函数并不适用于所有场合,所以 ES7 提出了 " 函数绑定 " ( function bind )运算符,用来取代call.apply.bind调用.虽然该语法还是 ES7 的一个提案,但是 Babel 转码器已经支持. 函数绑定运算符是并排的两个双冒号

  • 灵活运用Python 枚举类来实现设计状态码信息

    引言 在 web 项目中,我们经常使用自定义状态码来告知请求方请求结果以及请求状态:在 Python 中该如何设计自定义的状态码信息呢? 普通类加字典设计状态码 #!/usr/bin/python3 # -*- coding: utf-8 -*- # @Author: Hui # @Desc: { 项目响应码模块 } # @Date: 2021/09/22 23:37 class RETCODE: OK = "0" ERROR = "-1" IMAGECODEERR

  • ASP类Class入门 推荐

    Class 声明 声明一个类的名字,就是定义一些变量,属性,方法来组成一个类.我们常常看到别的程序语言中中都有类的说明,PHP,VB,C++,这个在VBScript中的类的说明,我是第一次听到,我们的日常工作就是网站开发,在这个里面多多少少搞出点经验,像模像样也能自诩为"内行",所以我就来分享一下我所知道的这个新的东东.我们来看看下面的这个代码吧!(window2000+IIS5.0通过测试) 类的定义1 yyh.asp <% ''声明一个名为yh的类 Class yh Priv

  • Java利用LocalDate类实现日历设计

    目录 前言 语法 日历实战 步骤分解 完整代码 结论 LocalDate API 前言 在我们完成这个日历设计前,需要了解Java中的预定义类LocalDate的一些用法 语法 LocalDate.now() // 2022-07-01 会构造一个新对象,表示构造这个对象时的日期. LocalDate.of(1999, 1, 1) 可以提供年.月和日来构造对应一个特定日期的对象: 当然,通常我们都希望将构造的对象保存在一个对象变量中: LocalDate newYearsEve = LocalD

随机推荐