英語版:http://dflying.dflying.net/1/archive/110_build_your_own_transformers_in_aspnet_atlas.html
ASP.NET Atlas のバインドは、2 つのオブジェクトを接続する強力な方法です。 (バインディングの詳細については、 http://dflying.cnblogs.com/archive/2006/04/04/366900.htmlを参照してください。) Atlas バインディングは、ソース オブジェクトで変更されたプロパティを指定された属性に自動的に適用します。対象オブジェクトの。ただし、ターゲット オブジェクトに適用する前に、このプロパティに変更を加えたい場合もあります。たとえば、インデックス付きリストを表示する場合、JavaScript ではインデックスをデフォルトの 0 ではなく 1 から増加させたい場合があります。現時点では、Atlas Transformer を使用する必要があります。 Atlas の Transformer はパイプラインのようなもので、必要なフィルタリング/装飾/変換を実行するために、ソース オブジェクトのプロパティからターゲット オブジェクトのプロパティに値を割り当てるプロセスに挿入されます。割り当てるプロパティを指定して (ここではソース属性に 1 を追加します)、それをターゲット属性に割り当てます。
Atlas は、加算、乗算、比較などのいくつかの組み込みトランスフォーマーを提供します。ただし、実際の開発では、ほとんどの場合、独自のトランスフォーマーを定義する必要があります。 CustomBooleanTransformer の例を開発して、カスタム トランスフォーマーの作成方法を理解しましょう。
CustomBooleanTransformer は、ブール値を Yes/No や Completed/InProgress などのカスタム形式に変換するために使用されます。バインディングを使用してブール値をユーザーに表示することを選択した場合、このトランスフォーマーは非常に便利であり、ユーザーにさらにフレンドリーなユーザー エクスペリエンスを提供します。
一般に、トランスフォーマの作成には次の 4 つの手順があります。
ソース バインディング オブジェクトから渡される、変換される値を取得します。ここでは、まず get_value() を呼び出して受信値を取得し、それをブール型に変換します。
トランスフォーマーのパラメータを取得します。ここでのパラメータは、カンマ (,) で 2 つの部分に分割できる文字列です。ブール値 true は最初の部分に変換され、false は 2 番目の部分に変換されます。渡されたパラメータが空の場合は、デフォルトの文字列 true/false が代わりに使用されます。
変換を行います。このステップでは、独自のロジックを使用して、受信値を送信値に変換する必要があります (通常は、前のステップで取得したトランスフォーマーのパラメーターを使用します)。ここでは、まずパラメータをカンマ (,) で 2 つの部分に分割し、最初の部分を true に、2 番目の部分を false に置き換えます。引数を 2 つの部分に分割できない場合は、代わりに true/false を使用します。
変換された値を出力するには、メソッド set_value() を呼び出してそれを実現します。
以下は CustomBooleanTransformer の JavaScript コードです。CustomBooleanTransformer.js として保存します。
Sys.BindingBase.Transformers.CustomBoolean = function(sender,eventArgs) {
// ステップ 1、入力値を取得します。
var value =eventArgs.get_value();
if (typeof(value) != 'boolean') {
値 = Boolean.parse(値);
}
// ステップ 2、引数の取得は変換に使用されます。
varcustomString =eventArgs.get_transformerArgument();
if (カスタム文字列 == null || カスタム文字列 == '') {
カスタム文字列 = 'true,false';
}
// ステップ 3、変換を実行します。
varcustomValues =customString.split(',');
if (customValues.length != 2)
{
カスタム値[0] = 'true';
カスタム値[1] = 'false';
}
var newValue = 値?カスタム値[0] : カスタム値[1];
// ステップ 4、変換された値を出力として設定します。
イベントArgs.set_value(newValue);
さて
、この CustomBooleanTransformer をテストしましょう。ページにチェックボックスとテキストボックスを追加し、バインドします。チェックボックスをオンまたはオフにすると、対応する変換されたブール値がテキストボックスに表示されます。
以下は、ASPX ファイルからの HTML 定義です。 ScriptManager で CustomBooleanTransformer.js ファイルへの参照を追加することを忘れないでください。
<atlas:ScriptManager ID="sm1" runat="server">
<スクリプト>
<atlas:ScriptReference Path="CustomBooleanTransformer.js" />
</スクリプト>
</atlas:スクリプトマネージャー>
<input id="myCheckbox" type="チェックボックス" />
<input id="myTextbox" type="text" />
以下は Atlas スクリプトの定義です。ここでは、ブール値 true を Yes に、false を No に変換するために、transformerArgument を「Yes,No」として指定します。 <page xmlns:script=" http://schemas.microsoft.com/xml-script/2005 ">
<参考文献>
</参考>
<コンポーネント>
<checkBox id="myCheckbox" />
<textBox id="myTextBox">
<バインディング>
<binding dataContext="myCheckbox" dataPath="checked"
property="text"transform="CustomBoolean"transformerArgument="はい、いいえ" />
</バインディング>
</textBox>
</コンポーネント>
</ページ>