在ASP.NET Atlas中建立自訂的Action

來源:互聯網
上載者:User

English Version: http://dflying.dflying.net/1/archive/122_build_your_own_actions_in_aspnet_atlas.html

Action是ASP.NET Atlas中繼承於Sys.Action基類的的一類組件,用來實現一類由某個事件引發的事件處理功能。Action與事件處理函數的功能類似,但它是一類泛化了的事件處理組件,用來描述一些常見的,通用的事件處理方法,例如調用某個方法,設定某個對象的某個屬性,引發一個PostBack等。

我們都知道,目前為止,Atlas最好的參考手冊就是它的原始碼。我們可以從原始碼中找到如下三種Atlas的內建Action,他們都繼承於Sys.Action基類:

  1. Sys.InvokeMethodAction:用來調用一個指定的函數。
  2. Set.SetPropertyAction:用來設定某個對象的某個屬性值。
  3. Sys.WebForms.PostBackAction:用來引發一個PostBack。

在實際的項目中,僅僅使用以上三個內建的Action往往是不夠的,我們通常會需要自己定義一些在項目中常用的Action。幸運的是,在Atlas完備的架構中,建立自訂的Action將是非常簡單的事情。下面讓我們通過一個簡單的AlertAction樣本來熟悉自訂Action的方法。當某個指定的事件被引發時,AlertAction將顯示給使用者一個JavaScript提示對話方塊,內含指定的文字。

通常的,建立自訂的Action有如下四個步驟:

  1. 繼承於Sys.Action基類。
  2. 定義您的Action類的屬性。在AlertAction的樣本中,我們需要指定一個message屬性用來儲存將要顯示給使用者的內容。
  3. 實現performAction()方法,以執行您需要的自訂動作。這個方法將被Action基類自動調用。在我們的樣本中,只是簡單的使用JavaScript中的內建alert()函數來彈出對話方塊,並顯示message屬性中的內容。
  4. 為您的自訂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://files.cnblogs.com/dflying/AtlasActionDemo.zip 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.