国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

在ASP.NET Atlas中創建自定義的Transformer

2024-07-10 13:11:13
字體:
來源:轉載
供稿:網友

english version: http://dflying.dflying.net/1/archive/110_build_your_own_transformers_in_aspnet_atlas.html

asp.net atlas中的綁定(binding)是一種將兩個對象連接起來的強大方法。(您可以參考http://dflying.cnblogs.com/archive/2006/04/04/366900.html得到更多關于綁定的信息。)atlas綁定會自動將源對象上變化了的屬性應用到目標對象的指定屬性上。但有時候您會希望在應用到目標對象之前對這個屬性進行一些修改。比如,當顯示一個有索引的列表時,您可能希望這個索引從1開始遞增,而不是javascript中默認的從0開始。這時候您就需要使用atlas transformer了。atlas中的transformer是一種類似管道的東西,它將插入到由源對象的屬性向目標對象的屬性賦值的過程中,以期對將要賦值的屬性進行必要的過濾/裝飾/轉換(在這里是將源屬性加1),然后再賦值給目標屬性。

atlas提供一些內建的transformer,例如add,multiply,compare等。然而在實際開發中,大多數情況下我們都需要定義自己的transformer。讓我們通過開發一個custombooleantransformer的例子來熟悉如何書寫自定義的transformer。

custombooleantransformer用來將布爾值轉換為我們自定義的格式,例如yes/no或者completed/inprogress。如果我們選擇使用綁定來將一個布爾值顯示給用戶,那么這個transformer將會是十分有用的,它帶給用戶更加友好的用戶體驗。

大體上,創建一個transformer將有如下四個步驟:

取得從源綁定對象中傳入的將被轉換的值。這里我們首先調用get_value()取得傳入的值,并將其轉換為布爾型。
取得transformer的參數。這里的參數是一個可以被逗號(,)分成兩部分的字符串。布爾值true將被轉換為第一部分,false將被轉換為第二部分。如果傳入的參數為空,則用默認的字符串true/false代替。
進行轉換。在這個步驟應當通過您自己的邏輯把傳入的值轉換成將要傳出的值(一般會用到上一步驟中取得的transformer的參數)。這里我們首先用逗號(,)將參數分成兩個部分,然后用第一部分代替true,用第二部分代替false。如果參數不能被分成兩個部分,那么使用true/false代替。
將轉換后的值輸出,調用方法set_value()來實現。
下面是custombooleantransformer的javascript代碼,將其保存為custombooleantransformer.js。

sys.bindingbase.transformers.customboolean = function(sender, eventargs) {
    // step 1, get input value.
    var value = eventargs.get_value();
    if (typeof(value) != 'boolean') {
        value = boolean.parse(value);
    }
   
    // step 2, get arguments will be used in trasforming.
    var customstring = eventargs.get_transformerargument();
    if (customstring == null || customstring == '') {
        customstring = 'true,false';
    }
   
    // step 3, do the transformation.
    var customvalues = customstring.split(',');
    if (customvalues.length != 2)
    {
        customvalues[0] = 'true';
        customvalues[1] = 'false';
    }
    var newvalue = value ? customvalues[0] : customvalues[1];
   
    // step 4, set the transformed value as output.
    eventargs.set_value(newvalue);
}

ok,現在讓我們測試一下這個custombooleantransformer。在頁面上添加一個checkbox和一個textbox并將他們綁定起來。當checkbox被選中/取消選中時,textbox中會顯示相應的被轉換后的布爾值。

下面是aspx文件中的html定義。不要忘記在scriptmanager中添加對custombooleantransformer.js文件的引用。

<atlas:scriptmanager id="sm1" runat="server">
    <scripts>
        <atlas:scriptreference path="custombooleantransformer.js" />
    </scripts>
</atlas:scriptmanager>
<input id="mycheckbox" type="checkbox" />
<input id="mytextbox" type="text" />

 

下面是atlas腳本定義。這里指定tranformerargument為‘yes,no’,以期讓布爾值true轉化為yes,false轉化為no。 <page xmlns:script="http://schemas.microsoft.com/xml-script/2005">
    <references>
    </references>
    <components>
        <checkbox id="mycheckbox" />
        <textbox id="mytextbox">
            <bindings>
                <binding datacontext="mycheckbox" datapath="checked" 
                property="text" transform="customboolean" transformerargument="yes,no" />
            </bindings>
        </textbox>
    </components>
</page>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清镇市| 梅河口市| 汉阴县| 沂水县| 新建县| 林西县| 上犹县| 濮阳市| 九龙坡区| 扎兰屯市| 乌拉特后旗| 同仁县| 德州市| 隆德县| 于都县| 梨树县| 汉寿县| 苍南县| 香格里拉县| 古交市| 璧山县| 台东市| 娄底市| 突泉县| 县级市| 荃湾区| 广宗县| 石林| 大城县| 文昌市| 栾城县| 吴川市| 祁门县| 霸州市| 拉萨市| 鄂温| 台中县| 灵台县| 济南市| 连江县| 杨浦区|