遭遇ASP類的事件設(shè)計
我之所以還是要宣揚(yáng)用mvc來開發(fā)asp,只是想讓面向過程的思考方式變成面向?qū)ο蟮乃伎挤绞?,這個對于任何一種語言的開發(fā)員來說都是有好處的。
mvc是個標(biāo)準(zhǔn)模型,asp要實(shí)現(xiàn)似乎真的是很困難,但是標(biāo)準(zhǔn)是標(biāo)準(zhǔn),運(yùn)用是運(yùn)用,既然asp要實(shí)現(xiàn)這個模型很難,那可以嘗試著將mvc模型變形成適合自己的模型。
“不管白貓黑貓能逮到耗子的就是好貓?!倍鴮τ谖覀冮_發(fā)者來說,不管是什么模型,能正確的指引我們的思路,完美完成項(xiàng)目的模型就是好模型。畢竟用戶最終用是我們的程序而不是我們的模型。
這段時間由于接觸到mvc,也知道了class的運(yùn)用方式,遭遇到了事件的設(shè)計。
其實(shí)具體的事件設(shè)計方式我也不是很明白,在qq里newskyline跟我說了,asp沒辦法作class的事件,
只能模擬。而我呢。算是為達(dá)目的不則手段(寫程序而以)的,認(rèn)為模擬也好,非模擬也行,只要達(dá)到我想要的效果就是好東西。
模擬事件的方式有兩種:
第一種:借用了execute/eval,用一個屬性收取函數(shù)名的字符,然后使用execute/eval來運(yùn)行函數(shù)。
如:
obj.ondataupdatestart="checkdata"
其構(gòu)造為:
public property let ondataupdatestart(byval a_strvalue)
''在此省略了對a_strvalue的一些嚴(yán)謹(jǐn)?shù)尿?yàn)證代碼。
p_strondataupdatestart=a_strvalue
end property
事件是觸發(fā)為:
public sub dataupdate()
''...忽略過程...
execute(p_strondataupdatestart & "(參數(shù)變量一,參數(shù)變量二)")
''...忽略過程...
end sub
稍微提一下execute和eval的不同點(diǎn)。
同樣的“x=y”。execute("x=y")的結(jié)果是將y值賦給x,而eval("x=y")則會返回一個boolean值,表示x與y的測試結(jié)果,如x等于y則返回true,反之返回false。
第二種:借用函數(shù)指針getref,在vbs手冊的解釋上來看就是綁定事件專用的函數(shù)。具體解釋如下:
“返回一個指向一過程的引用,此過程可綁定某事件?!?
具體運(yùn)用例子,如:
obj.ondataupdatestart="checkdata"
其構(gòu)造則改為:
public ondataupdatestart ''其實(shí)可以使用get/let模式,想偷懶了,所以直接聲明一個公開變量來傳遞了。
事件觸發(fā)則改為:
public sub dataupdate()
''...忽略過程...
set me.ondataupdatestart=getref(ondataupdatestart)
me.ondataupdatestart("參數(shù)變量一","參數(shù)變量二")
''...忽略過程...
end sub
以上兩種方式可以實(shí)現(xiàn)事件綁定,但是,從解釋上來說,我比較推崇第二種,相對于execute/eval來說更為嚴(yán)謹(jǐn)一些。
mvc是個標(biāo)準(zhǔn)模型,asp要實(shí)現(xiàn)似乎真的是很困難,但是標(biāo)準(zhǔn)是標(biāo)準(zhǔn),運(yùn)用是運(yùn)用,既然asp要實(shí)現(xiàn)這個模型很難,那可以嘗試著將mvc模型變形成適合自己的模型。
“不管白貓黑貓能逮到耗子的就是好貓?!倍鴮τ谖覀冮_發(fā)者來說,不管是什么模型,能正確的指引我們的思路,完美完成項(xiàng)目的模型就是好模型。畢竟用戶最終用是我們的程序而不是我們的模型。
這段時間由于接觸到mvc,也知道了class的運(yùn)用方式,遭遇到了事件的設(shè)計。
其實(shí)具體的事件設(shè)計方式我也不是很明白,在qq里newskyline跟我說了,asp沒辦法作class的事件,
只能模擬。而我呢。算是為達(dá)目的不則手段(寫程序而以)的,認(rèn)為模擬也好,非模擬也行,只要達(dá)到我想要的效果就是好東西。
模擬事件的方式有兩種:
第一種:借用了execute/eval,用一個屬性收取函數(shù)名的字符,然后使用execute/eval來運(yùn)行函數(shù)。
如:
obj.ondataupdatestart="checkdata"
其構(gòu)造為:
public property let ondataupdatestart(byval a_strvalue)
''在此省略了對a_strvalue的一些嚴(yán)謹(jǐn)?shù)尿?yàn)證代碼。
p_strondataupdatestart=a_strvalue
end property
事件是觸發(fā)為:
public sub dataupdate()
''...忽略過程...
execute(p_strondataupdatestart & "(參數(shù)變量一,參數(shù)變量二)")
''...忽略過程...
end sub
稍微提一下execute和eval的不同點(diǎn)。
同樣的“x=y”。execute("x=y")的結(jié)果是將y值賦給x,而eval("x=y")則會返回一個boolean值,表示x與y的測試結(jié)果,如x等于y則返回true,反之返回false。
第二種:借用函數(shù)指針getref,在vbs手冊的解釋上來看就是綁定事件專用的函數(shù)。具體解釋如下:
“返回一個指向一過程的引用,此過程可綁定某事件?!?
具體運(yùn)用例子,如:
obj.ondataupdatestart="checkdata"
其構(gòu)造則改為:
public ondataupdatestart ''其實(shí)可以使用get/let模式,想偷懶了,所以直接聲明一個公開變量來傳遞了。
事件觸發(fā)則改為:
public sub dataupdate()
''...忽略過程...
set me.ondataupdatestart=getref(ondataupdatestart)
me.ondataupdatestart("參數(shù)變量一","參數(shù)變量二")
''...忽略過程...
end sub
以上兩種方式可以實(shí)現(xiàn)事件綁定,但是,從解釋上來說,我比較推崇第二種,相對于execute/eval來說更為嚴(yán)謹(jǐn)一些。
相關(guān)文章
- 檢測函數(shù) asp class
- 遭遇ASP類的事件設(shè)計
- ASP高亮類
- Object對象的一些的隱藏函數(shù)介紹
- 淺談ASP中的類
- 在VBScript中使用類
- ASP 類專題
- 代碼與頁面的分離
- ASP代碼的對象化
- 一個asp快速字符串連接類
- 一個簡單的asp數(shù)據(jù)庫操作類
- ASP類編寫詳細(xì)說明
- 實(shí)現(xiàn)支持邏輯搜索/單詞搜索/詞組搜索+支持OR/AND關(guān)鍵字的VBS CLASS!
- ASP類Class入門 推薦
- 創(chuàng)建一個ASP通用分頁類
- 如何編寫一個ASP類
- 一個ACCESS數(shù)據(jù)庫訪問的類第1/3頁
- 分頁類,異常類
- ASP 類 Class入門