Versi Bahasa Inggris:http://dflying.dflying.net/1/archive/110_build_your_own_transformers_in_aspnet_atlas.html
Mengikat di ASP.NET Atlas adalah cara ampuh untuk menghubungkan dua objek. (Anda dapat merujuk ke http://dflying.cnblogs.com/archive/2006/04/04/366900.html untuk informasi lebih lanjut tentang pengikatan.) Pengikatan Atlas akan secara otomatis menerapkan properti yang diubah pada objek sumber ke atribut yang ditentukan dari objek sasaran. Namun terkadang Anda ingin membuat beberapa modifikasi pada properti ini sebelum menerapkannya pada objek target. Misalnya, saat menampilkan daftar yang diindeks, Anda mungkin ingin indeks mulai bertambah dari 1, bukan 0 default di JavaScript. Saat ini Anda perlu menggunakan Atlas Transformer. Transformer di Atlas adalah sesuatu seperti pipa. Itu akan dimasukkan ke dalam proses pemberian nilai dari properti objek sumber ke properti objek target, untuk melakukan pemfilteran/dekorasi/konversi yang diperlukan pada properti yang akan ditugaskan (ini dia untuk Tambahkan 1 ke atribut sumber) dan kemudian menetapkannya ke atribut target.
Atlas menyediakan beberapa trafo bawaan, seperti Tambah, Kalikan, Bandingkan, dll. Namun, dalam perkembangan sebenarnya, dalam banyak kasus kita perlu mendefinisikan trafo kita sendiri. Mari kenali cara menulis trafo kustom dengan mengembangkan contoh CustomBooleanTransformer.
CustomBooleanTransformer digunakan untuk mengonversi nilai Boolean ke dalam format khusus kami, seperti Ya/Tidak atau Selesai/Dalam Proses. Jika kita memilih untuk menggunakan pengikatan untuk menampilkan nilai Boolean kepada pengguna, maka transformator ini akan sangat berguna, dan akan memberikan pengalaman pengguna yang lebih ramah kepada pengguna.
Secara umum, pembuatan trafo akan memiliki empat langkah berikut:
Dapatkan nilai yang akan ditransformasikan yang diteruskan dari objek pengikat sumber. Di sini pertama-tama kita memanggil get_value() untuk mendapatkan nilai yang masuk dan mengubahnya menjadi tipe Boolean.
Dapatkan parameter transformator. Parameter disini adalah string yang dapat dipecah menjadi dua bagian dengan tanda koma (,). Boolean true akan dikonversi ke bagian pertama dan false akan dikonversi ke bagian kedua. Jika parameter yang diteruskan kosong, string default benar/salah yang digunakan.
Lakukan konversi. Pada langkah ini, Anda harus menggunakan logika Anda sendiri untuk mengubah nilai masuk menjadi nilai keluar (biasanya menggunakan parameter trafo yang diperoleh pada langkah sebelumnya). Disini kita bagi dulu parameternya menjadi dua bagian dengan tanda koma (,), lalu ganti true dengan bagian pertama dan false dengan bagian kedua. Jika argumen tidak dapat dibagi menjadi dua bagian, gunakan benar/salah saja.
Untuk menampilkan nilai yang dikonversi, panggil metode set_value() untuk mencapainya.
Di bawah ini adalah kode JavaScript untuk CustomBooleanTransformer, simpan sebagai CustomBooleanTransformer.js.
Sys.BindingBase.Transformers.CustomBoolean = function(pengirim, eventArgs) {
// langkah 1, dapatkan nilai masukan.
var nilai = eventArgs.get_value();
if (typeof(nilai) != 'boolean') {
nilai = Boolean.parse(nilai);
}
// langkah 2, argumen get akan digunakan dalam transformasi.
var customString = eventArgs.get_transformerArgument();
if (customString == null || customString == '') {
customString = 'benar, salah';
}
// langkah 3, lakukan transformasi.
var customValues = customString.split(',');
if (customValues.length != 2)
{
customValues[0] = 'benar';
nilai adat[1] = 'salah';
}
var Nilaibaru = nilai ?Nilaikustom[0] :Nilaikustom[1];
// langkah 4, atur nilai transformasi sebagai output.
eventArgs.set_value(nilai baru);
}
Oke, sekarang mari kita uji CustomBooleanTransformer ini. Tambahkan kotak centang dan kotak teks ke halaman dan ikat keduanya. Ketika kotak centang dipilih/tidak dicentang, nilai Boolean yang dikonversi akan ditampilkan di kotak teks.
Di bawah ini adalah definisi HTML dari file ASPX. Jangan lupa menambahkan referensi ke file CustomBooleanTransformer.js di ScriptManager.
<atlas:ScriptManager ID="sm1" runat="server">
<Skrip>
<atlas:ScriptReference Path="CustomBooleanTransformer.js" />
</Skrip>
</atlas:Manajer Skrip>
<masukan id="myCheckbox" type="kotak centang" />
<masukan id="myTextbox" type="teks" />
Di bawah ini adalah definisi skrip Atlas. Di sini, Argumen transformator ditentukan sebagai 'Ya, Tidak', untuk mengubah nilai Boolean benar menjadi Ya dan salah menjadi Tidak. <halaman xmlns:script=" http://schemas.microsoft.com/xml-script/2005 ">
<referensi>
</referensi>
<komponen>
<kotak centang id="kotak centang saya" />
<textBox id="myTextBox">
<ikatan>
<mengikat dataContext="myCheckbox" dataPath="dicentang"
properti="teks" transform="CustomBoolean" transformatorArgument="Ya,Tidak" />
</binding>
</Kotakteks>
</komponen>
</halaman>