Redirecttoaction Là Gì

  -  

Trong thủ pháp này, tôi giải thích lý do lý do bạn nên gọi phương thức RedirectToAction () sau khi submitting size thay bởi vì trả lại một view.Bạn đang xem: Redirecttoaction là gì

Hãy tưởng tượng rằng bạn đang tích lũy thông tin từ người sử dụng trang web của người sử dụng với một hiệ tượng HTML. Dạng HTML được hiển thị bằng một controller action tên HomeController.Create() và các dữ liệu mẫu mã được gửi cho một controller kích hoạt tên HomeController.New() để thêm vào các đại lý dữ liệu. Sau thời điểm form tài liệu được gửi, bạn có nhu cầu hiển thị các tác dụng khảo giáp tích lũy (xem hình 1).

Bạn đang xem: Redirecttoaction là gì

Hình 1 - Results.aspx View


*

Có hai phương thức mà chúng ta cũng có thể làm nhằm viết một controller kích hoạt mới. Trong Liệt kê 1, kích hoạt New() thứ nhất nộp tài liệu form cho cơ sở dữ liệu (sử dụng LINQ lớn SQL) và sau đó gọi RedirectToAction () để đưa hướng người dùng đến kích hoạt Results(). Trong Liệt kê 2, kích hoạt New() không điện thoại tư vấn RedirectToAction(). Vậy vào đó, view Results.aspx được trả trực tiếp bởi kích hoạt New().

Liệt kê 1 - SurveyController.vb

Public Class SurveyController Inherits System.Web.Mvc.Controller Private _db As New SurveyDataContext() Function Create() Return View() end Function Function (ByVal favoriteColor As String) " địa chỉ cửa hàng new survey results to lớn database Dim newSurvey As New Survey() newSurvey.FavoriteColor = favoriteColor newSurvey.EntryDate = DateTime.Now _db.Surveys.InsertOnSubmit(newSurvey) _db.SubmitChanges() " Redirect to Confirm action Return RedirectToAction("Results") over Function Function Results() Return View(_db.Surveys) kết thúc Function kết thúc ClassListing 2 – Survey2Controller.vb

Public Class Survey2Controller Inherits System.Web.Mvc.Controller Private _db As New SurveyDataContext() Function Create() Return View() kết thúc Function Function (ByVal favoriteColor As String) " địa chỉ new survey results lớn database Dim newSurvey As New Survey() newSurvey.FavoriteColor = favoriteColor newSurvey.EntryDate = DateTime.Now _db.Surveys.InsertOnSubmit(newSurvey) _db.SubmitChanges() " Return Results view Return View("Results", _db.Surveys) kết thúc Function kết thúc ClassVì vậy, bao gồm hai giải pháp tiếp cận khác nhau để mô tả một trang công dụng sau khi submitting size data. Bạn cũng có thể trả về RedirectToAction() hoặc chúng ta có thể trả về View(). Các phương pháp tiếp cận xuất sắc hơn?

Khi chúng ta gọi RedirectToAction(), framework ASP.NET MVC nhờ vào trình chăm sóc web để tiến hành một yêu cầu bắt đầu đến website của bạn. Cách thức RedirectToAction() trả về 302 - chứng trạng Moved Object cho trình duyệt. Trình chăm nom này fetches Results view.

Tuy nhiên, có cha lý do chính đại quang minh để ưa thích RedirectToAction () qua việc trở lại view trực tiếp: hai nguyên nhân được thực tế và một tại sao là triết học. Hãy bắt đầu với những lý do thực tế. Nếu như khách hàng không chuyển hướng, và người tiêu dùng chạm vào nút refresh / reload vào trình duyệt, dữ liệu cơ sở dữ liệu được gửi nhiều hơn một lần. Nói giải pháp khác, nếu bạn không đưa hướng, bạn cũng có thể nhận được tài liệu cơ sở tài liệu trùng lặp trong bảng cơ sở dữ liệu của bạn.

Xem thêm: Ý Nghĩa Nhan Đề Những Ngôi Sao Xa Xôi Của Lê Minh Khuê, Ý Nghĩa Nhan Đề Những Ngôi Sao Xa Xôi (8 Mẫu)

Bây giờ, đó là sự việc thật mà những trình duyệt hiện đại cảnh báo người tiêu dùng về nguy cơ này. Microsoft mạng internet Explorer 7.0 hỗ trợ các cảnh báo rất dị worded trong hình 2. Vì vậy, có lẽ nguy hiểm này không phải là tương đối là xấu như nó được trong quá khứ.

Hình 2 - IE chú ý khi làm mới sau khoản thời gian post form


*

Lý do thực tiễn thứ nhì có tương quan đến đầu tiên. Ví như bạn đánh dấu các trang hiệu quả (hoặc gửi email cho một links đến trang cho một người bạn) với sử dụng các bookmark nhằm mở trang sau, các vận động cơ sở dữ liệu sẽ xảy ra mà không báo trước. Size này sẽ được submitted không có dữ liệu, client-side validate sẽ tiến hành bỏ qua, và bạn sẽ nhận được trang xấu xí trong hình 2:

Hình 2 - Trả về công dụng bookmark


*

Lý bởi thứ cha để ưng ý RedirectToAction () trên View () là triết học. Framework ASP.NET MVC cung ứng một “RESTful” đồ họa đến ứng dụng của bạn. URL khác biệt tương ứng với hành động khác nhau. Nếu như khách hàng trả lại Results view khi kích hoạt New() được gọi, sự khớp ứng giữa actions và views bị phá vỡ. Nói bí quyết khác, trong một ứng dụng RESTful, view mà chúng ta nhìn thấy phải tương xứng với URL mà bạn nhìn thấy vào thanh showroom của trình duyệt.

Xem thêm: " Ủy Ban Nhân Dân Tiếng Anh Là Gì ? Ủy Ban Nhân Dân Tiếng Anh Là Gì

Nếu các bạn gọi RedirectToAction () sau khoản thời gian submit những dữ liệu form, các bạn sẽ thấy Survey/Results trong thanh địa chỉ cửa hàng của trình duyệt. Nếu như khách hàng gọi View () sau thời điểm submit các dữ liệu form, các bạn sẽ thấy Survey/New vào thanh địa chỉ cửa hàng của trình duyệt. Cũng chính vì bạn vẫn xem trang Results, kịch bản đầu tiên có ý nghĩa sâu sắc hơn. Thanh showroom trình duyệt đề xuất phản ánh triệu chứng của vận dụng web. Có tác dụng một đưa hướng được cho phép bạn giữ mang đến trình chăm nom và sever đồng bộ.

Nếu bạn muốn thử nghiệm với hai phương thức submit size được bàn bạc trong mẹo này, nhấp vào liên kết sau để tải về mã.https://aspblogs.blob.core.windows.net/media/stephenwalther/Downloads/Tip6/Tip6.zip