Kỹ thuật điều hướng trang web trong ASP.Net

Giới thiệu

Bài viết này giúp hiểu cơ bản về điều hướng trang web đóng vai trò rất quan trọng trong sử dụng kỹ thuật chuyển hướng tốt. Chuyển hướng trong ứng dụng web rất quan trọng, để hiểu từ thực tế trong dự án ứng dụng web, chúng ta cần phải di chuyển từ trang này sang trang khác và quay trở lại trang của trang gốc. Navigation có thể gây mất dữ liệu nếu không xử lý đúng cách. Chúng ta có nhiều kỹ thuật để chuyển dữ liệu từ trang này sang trang khác, nhưnhisuwr dụng kỹ thuật nào là điều quan trọng.

  • Response.Redirect
  • Server.Transfer
  • Server.Exceute
  • Cross page posting

1. Response.Redirect

Đây là một trong các kỹ thuật chuyển hướng trong ASP.NET để di chuyển từ web khác MSDN nói: Nó chuyển hướng client đến URL mới. Chỉ định URL mới và thực thi trang hiện tại nên chấm dứt.

Chuyển hướng web, điều hướng asp.net, response redirect, Server.Transfer, Server.Exceute, Cross page posting

 

Xử lý

Khi xử lý request của client khi máy chủ web gặp phải mã response.redirect với URL vị trí được chuyển hướng nó sẽ gửi lại tiêu đề reponse cho client sau đó client khởi tạo nhận được request của trang mới. Trong ví dụ này, chúng ta có thể thấy đường đi đến máy chủ web được thực hiện khi response.redirect được sử dụng.

Chuyển hướng web, điều hướng asp.net, response redirect, Server.Transfer, Server.Exceute, Cross page posting

Chúng ta có thể điều hướng đến URL khác sử dụng response.redirect hoặc trên cùng máy chủ hoặc máy chủ khác nhau. Giống như trong ví dụ sau đây chúng ta có thể đi đến trang chủ Google được lưu trữ trên máy chủ khác sử dụng response.redirect

Nó duy trì lịch sử của URL từ nơi nó chuyển đến, có nghĩa là chúng ta có thể quay trở lại bằng cách sử dụng nút quay lại.

Chú ý quan trọng

  • Chuyển hướng đến URL chuyển hướng mới, nơi nó được chuyển trong trình duyệt.
  • Duy trì lịch sử và trang trước có sẵn với các nút quay lại.
  • Chuyển hướng người dùng đến trang web được lưu trữ trên cùng máy chủ hoặc máy chủ khác nhau.
  • Đi vòng thêm đến máy chủ khiến nó chậm hơn chút.

 

2. Server.Transfer

Nó là kỹ thuật điều hướng trong ứng dụng web ASP.NET để di chuyển từ web khác trên cùng máy chủ mà không thay đổi URL trong thanh địa chỉ. Đây là cú pháp cho việc sử dụng kỹ thuật này, về cơ bản nó là URL của nơi bạn muốn hướng đến.

Server.Transfer(“Webform2.aspx”);

Chuyển hướng web, điều hướng asp.net, response redirect, Server.Transfer, Server.Exceute, Cross page posting

Trên page load Webform2.aspx. Không gian tên System.Collections.Specialized chứa NameValueCollection.

1
System.Collections.Specialized.NameValueCollection formVals = Request.Form;

 

 

Ví dụ:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
namespace NevigationTest
{
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
System.Collections.Specialized.NameValueCollection formVals = Request.Form;
Label1.Text = formVals[“ctl00$MainContent$txtName”];
Label2.Text = formVals[“ctl00$MainContent$TextBox2”];
Label3.Text = formVals[“ctl00$MainContent$TextBox3”];
}
}
}

 

 

Chuyển hướng web, điều hướng asp.net, response redirect, Server.Transfer, Server.Exceute, Cross page posting

Gửi thông tin từ trang web ASP.NET bao gồm cả value của hidden fields, chẳng hạn như __VIEWSTATE, __EVENTTARGET và __EVENTARGUMENT, được sử dụng để xử lý nội bộ trong trang.

Bạn có thể loại bỏ chúng bằng cách code hay hardcode điều khiển mà bạn muốn sử dụng để có được các giá trị từ trang nguồn.

Sử dụng Previous Page

Sử dụng thuộc tính PreviousPage bạn có thể tìm thấy điều khiển sau:

1
Page Pg = Page.PreviousPage;

 

 

Ví dụ:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
namespace NevigationTest
{
public partial class WebForm2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Page Pg = Page.PreviousPage;
if(Pg != null)
{
Control placeHolder = Pg.Controls[0].FindControl(“MainContent”);
TextBox prevTxtBox = (TextBox)placeHolder.FindControl(“txtName”);
if (prevTxtBox != null)
{
Label1.Text = prevTxtBox.Text;
}
}
}
}
}

 

 

Chuyển hướng đến URL đến Webserver khác

Bạn có thể chuyển hướng đến trang web trên sever web bằng cách sử dụng phương thức Server.Transfer nhưng nó sẽ bung ra một ngoại lệ run time. Sử dụng đoạn mã tôi đang điều hướng đến trang chủ Google:

1
2
3
4
5
6
7
protected void Button4_Click(object sender, EventArgs e)
{
}

 

 

Chuyển hướng web, điều hướng asp.net, response redirect, Server.Transfer, Server.Exceute, Cross page posting

Chú ý quan trọng

  • Chuyển request trang hiện tại vào trang aspx trên cùng máy chủ.
  • Không thay đổi thanh địa chỉ.
  • Bảo tồn các nguồn tài nguyên máy chủ và tránh được vòng lặp không cần thiết cho máy chủ.
  • Không thể duy trì lịch sử.
  • Không thay đổi URL trong thanh địa chỉ trong trường hợp này để nút quay lại không thể được sử dụng.

 

3. Server.Exceute

Nó cũng là một kỹ thuật định vị tương tự như Server.Transfer nhưng có hành vi khác khi thực hiện tiến trình này.

1
Server.Execute(“WebForm3.aspx”);

 

 

Khi sử dụng phương thức server.Exceute để điều hướng, nó giúp giữ lại control thực thi từ mã nguồn web. Trong ví dụ default.aspx trên là mã nguồn web từ nơi mà chúng ta đã chuyển đến webform3.aspx sử dụng server.exceute. Khi điều khiển phát hiện khối mã chuyển hướng nó di chuyển điều khiển và bắt đầu xử lý webform3.aspx nhưng không để lại điều khiển từ default.aspx và sau khi hoàn thành mục tiêu điều khiển biểu mẫu web một lần nữa chuyển khiển và chuyển sang mã nguồn web và thực hiện thêm mã xử lý trên trang default.aspx.

 

4. Cross page posting

Trong mẫu web ASP.NET là trang mặc định được đăng trên bản thân bất cứ khi nào nút được nhấp. HCross page posting cho phép đăng tải web để đăng bài trên web khác trên nút khác. Thuộc tính của nút PostBackURL được thiết lập đến trang mà bạn muốn làm qua trang soạn thảo.

Dưới đây là ví dụ về những gì chúng ta đang làm cho webform4.

Chuyển hướng web, điều hướng asp.net, response redirect, Server.Transfer, Server.Exceute, Cross page posting

Ví dụ

Mã sau đây cho thấy làm thế nào để lấy giá trị từ trang nguồn và hiển thị nó trang mục tiêu sau khi gửi bài qua trang vào bấm nút từ trang trước.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
namespace NevigationTest
{
public partial class WebForm4 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Page pg = Page.PreviousPage;
if (pg != null)
{
Control placeHolder = pg.Controls[0].FindControl(“MainContent”);
TextBox prevTxtBox = (TextBox)placeHolder.FindControl(“txtName”);
if (prevTxtBox != null)
{
Label1.Text = prevTxtBox.Text;
}
}
}
}
}

 

 

Nguyễn Tấn Tài

Nguyễn Tấn Tài Founder/ CEO Giaotrinhhay.com - Giáo Trình Hay Chia Sẻ: Tài liệu SEO website, DIGITAL MARKETING, Ebook CNTT, Mẹo vặt, Phần mềm, Thủ thuật PC và kho tài liệu học tập hữu ích miễn phí.

Bài viết liên quan

DEVOPS LÀ GÌ?

DEVOPS LÀ GÌ? Devops là gì Theo Wikipedia Devops là thuật ngữ chỉ tập hợp các hoạt [...]

Database là gì?

Database là gì? Database được gọi là Cơ sở dữ liệu, là một bộ sưu tập dữ liệu có [...]

Tạo Responsive và Mobile-Friendly Tooltip bằng jQuery

Việc tìm kiếm một chức năng Tooltip phù hợp với website hay blog thì không [...]

Code tự động lưu ảnh vào host khi copy bài từ nguồn khác

Như tiêu tiêu đề thôi hôm nay mình sẽ share đoạn code tự động lưu [...]

Tạo đăng nhập trên website với tài khoản google

Bạn cần người dùng vào website của bạn đăng nhập mà không cần phải đăng [...]

Xác thực người dùng với tài khoản facebook

Code xác thực người dùng trên website dựa trên tài khoản của facebook. Bạn có [...]

Để lại một bình luận