top
Loading...
在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。

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
作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗