AnhDaiDienBaiDang How to Request.form working in MasterPage

Lấy và chuyển dữ liệu từ các Control trên nhiều trang aspx hoặc chính nó rất quan trong. Dùng phương thức GET trên Url thì không có vấn đề gì. Nhưng trong một số trường hợp muốn chuyển bằng POST. Điều này cũng không có gì khó khi đó chỉ là 2 trang aspx thông thường.

Nhưng vấn đề là POST trong trang Master Page. Không biết các bạn có gặp vấn đề gì không. Nhưng s mất rất nhiều time với nó. Nhân tiện chia sẽ cách s khắc phục nó..

Đầu tiên là Request.Form trong hai trang aspx bình thường. Trong Page1.aspx kéo thả một Textbox và một Button.
Page1.aspx
 I like Asp.net  

Trên Page2.aspx tạo một Lable để hiển thị. Và trong trang code-behind
Page2.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = Request.Form["TextBox1"];
}
Vậy là dữ liệu trong TextBox1 đã được lấy thành công ở trang Page2.

Tiếp theo Request.Form trong trang MasterPage, đây mới là vấn đề!
Bạn tạo một Master Page và một trang Default.aspx làm trang mặc định cho MasterPage: Set As Start Page...
Tại trang Default.aspx ta có một TextBox, Button, Lable.
Default.aspx


I like Asp.net

This is:

Tại code-behide của nó bạn có code sau.
Default.aspx.cs
protected void click(object sender, EventArgs e)
{
// No display it by Request.Form
Label1.Text = Request.Form["TextBox1"];
// This is way that can get data TextBox1
Label1.Text = Request.Form["ctl00$ContentPlaceHolder1$TextBox1"];
}
Làm sao để có được ctl00$ContentPlaceHolder1$TextBox1 là vấn đề mà s cũng chưa rõ lắm. Bạn có thể tham khảo thêm về cấu trúc bên trong một trang ASP.Net tại đây.

Và bằng cách này bạn có thể Get được value của control ở bất cứ trang nào. Trong Button thêm thuộc tính postbackurl="~/namepage.aspx" để chuyển đến trang cần thiết...
S có file source nè (VS2010):


Pass: saliproblog
Bạn có thể trace output để biết dc cấu trúc trang Asp.net của chính mình: Trong file web.config thêm dòng
<trace enabled="true" pageOutput="true" localOnly="false"/>
trong cặp thẻ <system.web></system.web>