Semua orang tahu bahwa Asp.Net menggunakan ViewState untuk menyimpan informasi di halaman dan informasi yang ditentukan pengguna antara klien dan server.
Di versi sebelum 2.0, ViewState disimpan dalam kontrol tersembunyi di halaman: __VIEWSTATE
Kami tidak dapat mengubah cara dan lokasi ViewState disimpan.
Sekarang di 2.0, Asp.Net telah membuka fitur ini, memungkinkan saya menyesuaikan lokasi penyimpanan ViewState.
Atribut baru telah ditambahkan ke kelas Halaman di 2.0: PageStatePersister.
Kita dapat mengganti properti ini untuk menerapkan penyimpanan ViewState khusus. Properti ini mengembalikan turunan subkelas yang diwarisi dari kelas PageStatePersister.
Dua metode penyimpanan disediakan secara default di 2.0: satu adalah menyimpan di halaman (HiddenFieldPageStatePersister), dan yang lainnya adalah menyimpan di Sesi (SessionPageStatePersister).
Kode berikut mengambil alih properti PageStatePersister dan menyimpan ViewState ke Sesi:
protected override PageStatePersister PageStatePersister
{
mendapatkan
{
kembalikan SessionPageStatePersister baru (ini);
}
}
Selain dua metode penyimpanan default ini, kita dapat mewarisi kelas PageStatePersister untuk mengimplementasikan metode penyimpanan kita sendiri.
Kode berikut menunjukkan cara menyimpan ViewState ke file:
menggunakan Sistem;
menggunakan Sistem.Data;
menggunakan Sistem.Konfigurasi;
menggunakan Sistem.Web;
menggunakan Sistem.Web.Keamanan;
menggunakan Sistem.Web.UI;
menggunakan Sistem.Web.UI.WebControls;
menggunakan System.Web.UI.WebControls.WebParts;
menggunakan Sistem.Web.UI.HtmlControls;
menggunakan Sistem.IO;
menggunakan System.Runtime.Serialization.Formatters.Binary;
/**//// <ringkasan>
/// Ringkasan deskripsi CWingViewState
/// </ringkasan>
kelas publik CWingViewState : PageStatePersister
{
CWingViewState publik(Halaman halaman):basis(halaman)
{
}
penggantian publik batalkan Load()
{
BacaFile();
}
penggantian publik batal Simpan()
{
TulisFile();
}
kekosongan pribadi WriteFile()
{
FileStream file = File.Buat(@"C:CustomerViewState.CW");
BinaryFormatter bf = BinaryFormatter baru();
bf.Serialize(file, base.ViewState);
file.Siram();
file.Tutup();
}
kekosongan pribadi ReadFile()
{
FileStream file = File.OpenRead(@"C:CustomerViewState.CW");
BinaryFormatter bf = BinaryFormatter baru();
base.ViewState = bf.Deserialize(file);
}
}
Di halaman tertentu:
dilindungi menimpa PageStatePersister PageStatePersister
{
mendapatkan
{
kembalikan CWingViewState baru (ini);
}
}
Sumber: .Net space BLOG