在ASP.NETAtlas中創建自定義Action
Action是ASP.NET Atlas中繼承于Sys.Action基類的的一類組件,用來實現一類由某個事件引發的事件處理功能。Action與事件處理函數的功能類似,但它是一類泛化了的事件處理組件,用來描述一些常見的,通用的事件處理方法,例如調用某個方法,設定某個對象的某個屬性,引發一個PostBack等。
我們都知道,目前為止,Atlas最好的參考手冊就是它的源代碼。我們可以從源代碼中找到如下三種Atlas的內建Action,他們都繼承于Sys.Action基類:
Sys.InvokeMethodAction:用來調用一個指定的函數。
Set.SetPropertyAction:用來設定某個對象的某個屬性值。
Sys.WebForms.PostBackAction:用來引發一個PostBack。
在實際的項目中,僅僅使用以上三個內建的Action往往是不夠的,我們通常會需要自己定義一些在項目中常用的Action。幸運的是,在Atlas完備的架構中,創建自定義的Action將是非常簡單的事情。下面讓我們通過一個簡單的AlertAction示例來熟悉自定義Action的方法。當某個指定的事件被引發時,AlertAction將顯示給用戶一個JavaScript提示對話框,內含指定的文字。
通常的,創建自定義的Action有如下四個步驟:
繼承于Sys.Action基類。
定義您的Action類的屬性。在AlertAction的示例中,我們需要指定一個message屬性用來保存將要顯示給用戶的內容。
實現performAction()方法,以執行您需要的自定義操作。這個方法將被Action基類自動調用。在我們的示例中,只是簡單的使用JavaScript中的內建alert()函數來彈出對話框,并顯示message屬性中的內容。
為您的自定義Action 在getDescriptor()方法中添加相關的類型說明。
下面是AlertAction的JavaScript代碼。上述四個步驟在代碼內以注釋的形式標出。將下面的代碼保存為AlertAction.js。
讓我們在頁面中測試一下這個AlertAction。這里需要在頁面上添加的僅僅是一個Button,用來引發我們的AlertAction。下面是ASPX文件中的HTML定義。不要忘記在ScriptManager中添加對AlertAction.js文件的引用。
下面是Atlas腳本定義,十分簡單,這里不再贅述。
瀏覽器中的運行結果:
上述示例程序可以在此下載:http://www.cnblogs.com/Files/dflying/AtlasActionDemo.zip
我們都知道,目前為止,Atlas最好的參考手冊就是它的源代碼。我們可以從源代碼中找到如下三種Atlas的內建Action,他們都繼承于Sys.Action基類:
Sys.InvokeMethodAction:用來調用一個指定的函數。
Set.SetPropertyAction:用來設定某個對象的某個屬性值。
Sys.WebForms.PostBackAction:用來引發一個PostBack。
在實際的項目中,僅僅使用以上三個內建的Action往往是不夠的,我們通常會需要自己定義一些在項目中常用的Action。幸運的是,在Atlas完備的架構中,創建自定義的Action將是非常簡單的事情。下面讓我們通過一個簡單的AlertAction示例來熟悉自定義Action的方法。當某個指定的事件被引發時,AlertAction將顯示給用戶一個JavaScript提示對話框,內含指定的文字。
通常的,創建自定義的Action有如下四個步驟:
繼承于Sys.Action基類。
定義您的Action類的屬性。在AlertAction的示例中,我們需要指定一個message屬性用來保存將要顯示給用戶的內容。
實現performAction()方法,以執行您需要的自定義操作。這個方法將被Action基類自動調用。在我們的示例中,只是簡單的使用JavaScript中的內建alert()函數來彈出對話框,并顯示message屬性中的內容。
為您的自定義Action 在getDescriptor()方法中添加相關的類型說明。
下面是AlertAction的JavaScript代碼。上述四個步驟在代碼內以注釋的形式標出。將下面的代碼保存為AlertAction.js。
Sys.AlertAction = function() { Sys.AlertAction.initializeBase(this); // step 2 var _message; this.get_message = function() { return _message; } this.set_message = function(value) { _message = value; } // step 4 this.getDescriptor = function() { var td = Sys.AlertAction.callBaseMethod(this, 'getDescriptor'); td.addProperty('message', String); return td; } // step 3 this.performAction = function() { alert(_message); return null; } } // step 1 Sys.AlertAction.registerSealedClass('Sys.AlertAction', Sys.Action); Sys.TypeDescriptor.addType('script', 'alertAction', Sys.AlertAction); |
讓我們在頁面中測試一下這個AlertAction。這里需要在頁面上添加的僅僅是一個Button,用來引發我們的AlertAction。下面是ASPX文件中的HTML定義。不要忘記在ScriptManager中添加對AlertAction.js文件的引用。
<atlas:ScriptManager EnablePartialRendering="true" ID="ScriptManager1" runat="server"> <Scripts> <atlas:ScriptReference Path="AlertAction.js" /> </Scripts> </atlas:ScriptManager> <div> <input id="myButton" type="button" value="Click Me!" /> </div> |
下面是Atlas腳本定義,十分簡單,這里不再贅述。
<script type="text/xml-script"> <page xmlns:script="http://schemas.microsoft.com/xml-script/2005"> <components> <button id="myButton"> <click> <alertAction message="Button Clicked!" /> </click> </button> </components> </page> </script> |
瀏覽器中的運行結果:
上述示例程序可以在此下載:http://www.cnblogs.com/Files/dflying/AtlasActionDemo.zip