Bài viết này sẽ hướng dẫn một số kỹ thuật để vượt qua giá trị từ trang này sang một trang khác trong ASP.Net. Khi bạn phát triển bất kỳ trang web trong ASP.Net có nhiều trang, bạn cần cung cấp hướng để di chuyển hoặc duyệt giữa các trang trong trang web. Tại thời điểm chuyển hướng, bạn cần một số dữ liệu hoặc giá trị được thông qua từ trang nguồn đến trang đích để làm một số xử lý trong trang đích. Để làm điều đó, ASP.Net có một số kỹ thuật có thể giúp chúng ta vượt qua giá trị từ trang này sang một trang khác.
Sử dụng HTTP Post
Sử dụng kỹ thuật này, tôi sẽ gọi một "PostBackUrl" và trên trang tiếp theo sử dụng "Request.Form" .
PostBackUrl: PostBackUrl của trang được sử dụng để gửi từ trang hiện tại khi các nút điều khiển được nhấp.
Bây giờ kéo và thả một TextBox và nút điều khiển vào trang.
HTTPPostSource Page
HTTPPostSource.aspx
<asp:TextBoxID="TextBox1"runat="server"></asp:TextBox>
<br/>
<br/>
<asp:ButtonID="Button1"runat="server"Text="Button"OnClick="Button1_Click"/>
HTTPPostSource.aspx.cs
Protectedvoid Button1_Click(object sender, EventArgs e)
{
Button1.PostBackUrl ="~/HTTPPostTarget.aspx";
}
HTTPPostTarget Page
HTTPPostTarget.aspx
<%@Page Language="C#"AutoEventWireup="true"CodeFile="HTTPPostTarget.aspx.cs"
Inherits="HTTPPostTarget"%>
<!DOCTYPEhtml PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headid="Head1"runat="server">
<title></title>
</head>
<body>
<formid="form1"runat="server">
<div>
<asp:LabelID="Label1"runat="server"Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
HTTPPostTarget.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
publicpartial classHTTPPostTarget : System.Web.UI.Page
{
protected void Page_Load(object sender,EventArgs e)
{
Label1.Text ="Posted Value: " + Request.Form["Textbox1"].ToString();
}
}
Bây giờ chạy ứng dụng thử.
Sử dụng thuộc tính Public
Khi chúng ta sử dụng thuộc tính public, chúng ta tạo ra thuộc tính public và trên trang tiếp theo làm cho nó sử dụng "PreviousPage.PropertyName". Nếu bạn có 2 trang đơn giản thì một PublicPropertySource và bên kia là một PublicPropertyTarget. Tôi làm nó theo cách này.
PublicPropertySource page: Đây là trang chứa thuộc tính
PublicPropertySource.aspx
<asp:TextBoxID="TextBox1"runat="server"></asp:TextBox>
<asp:ButtonID="Button1"runat="server"
OnClick="Button1_Click"Text="Button"/>
PublicPropertySource.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
publicpartial classPublicProperty : System.Web.UI.Page
{
public string TextValue
{
get
{
return TextBox1.Text;
}
}
protected void Page_Load(object sender,EventArgs e)
{
}
protected void Button1_Click(object sender,EventArgs e)
{
Server.Transfer("PublicPropertyTarget.aspx");
}
}
PublicPropertyTarget Page
Thêm PublicPropertyTarget.aspx vào đầu trang
<%@ PreviousPageType VirtualPath="Page1.aspx" %>PublicPropertyTarget.aspx
<%@Page Language="C#"AutoEventWireup="true"CodeFile="PublicPropertyTarget.aspx.cs"Inherits="PublicPropertyTarget" %>
<%@PreviousPageType VirtualPath="~/PublicPropertySource.aspx"%>
<!DOCTYPEhtml PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title></title>
</head>
<body>
<formid="form1"runat="server">
<div>
<asp:LabelID="Label1"runat="server"Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
PublicPropertyTarget.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
publicpartial classPublicPropertyTarget : System.Web.UI.Page
{
protected void Page_Load(object sender,EventArgs e)
{
Label1.Text = PreviousPage.TextValue;
}
}
Bây giờ chạy thử nghiệm nó.