h1

Teknik pengiriman nilai antar page di ASP.NET (Part 2)

10 Juli 2009

CONTEXT

Teknik yang jarang diketahui dalam pengiriman data antar page adalah menggunakan obyek Context. Sebuah instance dari obyek context dihubungkan dengan tiap instance dari halaman. Perlu diingat sebuah halaman dari ASP.NET merupakan sebuah instance class atau parsial class. Karena setiap instance halaman pada umumnya hanya “numpang” sejenak diserver (ketika dieksekusi dan dirender), data yang ada di dalam context hanya bertahan sebentar.

Dengan cara ini sebenarnya penyimpanan menjadi lebih efesien karena data akan secara otomatis dihapus dari memori bersamaan dengan dihapusnya obyek halaman tadi. Walaupun demikian data akan tetap ada di memori apabila ditransfer ke halaman yang lain.

Berikut adalah contoh kode program dimana pengguna menyimpan data di Page1 dan kemudian mengirimkannya ke Page2. Setelah itu obyek context akan dihapus dari memori server.

‘VB.NET

Context.Items("UserName") = TextBox1.Text 'Page1
Server.Transfer("Page2.aspx") 'Page1
Dim s As String = Context.Items("UserName").ToString 'Page2

//C#

Context.Items["UserName"] = TextBox1.Text; //Page1
Server.Transfer("Page2.aspx"); //Page1
string s = Context.Items["UserName"].ToString(); //Page2

Perlu diingat penggunaan obyek context harus menggunakan Server.Transfer. Context tidak dapat bekerja dengan Response.Redirect karena dengan Response.Redirect akan terjadi pengembalian obyek ke client, yang tentu saja akan menhapus instance dari context –ingat bahwa obyek context hanya “hidup” dalam memori server-. Berikut beberapa perbedaan antara Response.Redirect dengan Server.Transfer.

Response Redirect

  • Allows redirection to any URL on any web server.
  • Data must be passed manually via QueryString or one of the other techniques mentioned in this article.
  • Allows users to refresh & bookmark the page normally
  • Requires an extra round trip to the client, which is inefficient and can therefore hurt scalability

Server.Transfer

  • Can only transfer to pages in the same web application
  • Allows use of the Context object to automatically pass values between pages
  • The client is never informed the URL has changed, which has several effects: The browser address bar still (incorrectly) reflects the original page dan can cause problems when the user tries to refresh or bookmark the page.

Disamping untuk mengirimkan nilai antar halaman, obyek context juga memiliki kegunaan lainnya. Diantaranya adalah saat Anda ingin memanggil obyek custom dari halaman Anda, dimana obyek tersebut tidak dapat dipanggil dengan menggunakan obyek Application atau Session secara langsung.

Context.Session("Whatever")…

VIEWSTATE
Obyek ViewState digunakan untuk menyimpan informasi saat halaman mengalami postback. Obyek ini tidak dapat digunakan untuk mengirim nilai antar halaman. Perintah nya hampir sama dengan obyek session.

‘VB.NET

ViewState("PageValue") = TextBox1.Text 'Store
Dim s As String = ViewState("PageValue").ToString 'Retrieve

//C#

ViewState["PageValue"] = TextBox1.Text; //Store
string s = ViewState["PageValue"].ToString(); //Retrieve

Berbeda dengan yang lain, ViewState akan diencode dan outputnya di generate ke halaman HTML. Apabila Anda melakukan click kanan – viewsource ke halaman ASP.NET di browser, Anda akan melihat elemen HTML yang terlihat sebagai berikut :

Ketika sebuah halaman di post ke server, ASP.NET akan mengencode dan kemudian mendecode nya kembali ke bentuk asalnya. Meskipun nilai ViewState diencode, nilainya tidak dienkripsi. Jadi penulis sarankan jangan menyimpan data penting ke dalam obyek ViewState.
Saran penulis jangan menyimpan terlalu banyak data ke dalam ViewState, sebagai contoh menyimpan obyek DataTable. Perjalanan pengiriman halaman beserta obyek ViewState akan memakan bandwidth yang besar. Penggunaan ViewState di teknologi ASP.NET ini pada awalnya untuk mengatasi permasalahan data yang telah dimasukkan user ke dalam form ketika halaman mengalamai postback.  Jadi pergunakan dengan bijak. Masih ada lagi beberapa teknik untuk mengirimkan nilai antar page, penulis kan menshare di waktu mendatang. Salam

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: