Redirecttoaction là gì

Trong thủ thuật này, tôi giải thích lý do tại vì sao các bạn nên người ta gọi thủ tục RedirectToAction () sau khi submitting size cố vị trả lại một view.

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

Hãy tưởng tượng rằng nhiều người đang tích lũy lên tiếng từ bỏ người tiêu dùng website của người tiêu dùng với cùng một hiệ tượng HTML. Dạng HTML được hiển thị bằng một controller action thương hiệu HomeController.Create() cùng những dữ liệu mẫu mã được gửi mang đến một controller action tên HomeController.New() để cấp dưỡng cơ sở tài liệu. Sau Lúc size tài liệu được gửi, bạn muốn hiển thị các công dụng điều tra khảo sát tích trữ (coi hình 1).

Hình 1 - Results.aspx View

*

Có hai phương pháp nhưng chúng ta cũng có thể làm để viết một controller action bắt đầu. Trong Liệt kê 1, action New() trước tiên nộp dữ liệu form mang đến các đại lý tài liệu (sử dụng LINQ to SQL) với kế tiếp gọi RedirectToAction () nhằm chuyển sang làn đường khác người tiêu dùng cho action Results(). Trong Liệt kê 2, action New() ko Điện thoại tư vấn RedirectToAction(). Txuất xắc vào đó, view Results.aspx được trả trực tiếp vì action 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 favoriteMàu sắc As String) " Add new survey results to database Dim newSurvey As New Survey() newSurvey.FavoriteMàu sắc = favoriteColor newSurvey.EntryDate = DateTime.Now _db.Surveys.InsertOnSubmit(newSurvey) _db.SubmitChanges() " Redirect lớn Confirm action Return RedirectToAction("Results") End Function Function Results() Return View(_db.Surveys) End Function End ClassListing 2 – Survey2Controller.vb

Public Class Survey2Controller Inherits System.Web.Mvc.Controller Private _db As New SurveyDataContext() Function Create() Return View() End Function Function (ByVal favoriteColor As String) " Add new survey results to database Dyên newSurvey As New Survey() newSurvey.FavoriteColor = favoritemàu sắc newSurvey.EntryDate = DateTime.Now _db.Surveys.InsertOnSubmit(newSurvey) _db.SubmitChanges() " Return Results view Return View("Results", _db.Surveys) End Function End ClassVì vậy, có nhị bí quyết tiếp cận không giống nhau nhằm biểu hiện một trang kết quả sau thời điểm submitting khung data. Bạn có thể trả về RedirectToAction() hoặc bạn cũng có thể trả về View(). Những cách tiếp cận tốt hơn?

Lúc chúng ta hotline RedirectToAction(), framework ASP.NET MVC dựa vào trình duyệt y website nhằm tiến hành một yêu cầu new mang đến website của khách hàng. Pmùi hương pháp RedirectToAction() trả về 302 - Tình trạng Moved Object mang lại trình phê duyệt. Trình duyệt y này fetches Results view.

Vì vậy, bạn cũng có thể nghĩ về hotline RedirectToAction() là chiến lược nghèo. Trình để mắt vẫn thao tác làm việc rộng khi bạn Gọi RedirectToAction (). Một loại gì đó rất có thể đi không nên trên mạng khi trình để ý tạo nên một đề xuất new. Sử dụng RedirectTokích hoạt () xuất hiện những tài năng một điều gì đó vẫn xẩy ra không đúng.

Xem thêm: Tại Sao Không Kết Bạn Được Trên Facebook Cho Người Khác ? Khắc Phục Không Gửi Được Lời Mời Kết Bạn Facebook

Tuy nhiên, gồm ba nguyên nhân chính đáng nhằm mê thích RedirectTokích hoạt () qua Việc trở về view trực tiếp: nhị nguyên nhân được thực tiễn cùng một lý do là triết học. Hãy ban đầu với mọi nguyên nhân thực tế. Nếu các bạn không chuyển làn phân cách, cùng người tiêu dùng va vào nút refresh / reload vào trình để mắt, dữ liệu cửa hàng tài liệu được gửi nhiều hơn thế nữa một lần. Nói bí quyết khác, nếu như bạn ko chuyển hướng làn phân cách, bạn có thể nhận ra tài liệu cơ sở tài liệu đụng hàng trong bảng các đại lý tài liệu của người tiêu dùng.

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

Hình 2 - IE cảnh báo Lúc có tác dụng new sau khoản thời gian post form

*

Lý vì chưng thực tiễn lắp thêm nhị gồm liên quan cho trước tiên. Nếu bạn lưu lại những trang hiệu quả (hoặc gửi gmail cho một liên kết đến trang mang đến một người bạn) với thực hiện các bookmark để mnghỉ ngơi trang sau, những chuyển động các đại lý dữ liệu sẽ xảy ra cơ mà không báo trước. Form này sẽ được submitted không tồn tại dữ liệu, client-side validate sẽ được làm lơ, và bạn sẽ nhận ra trang không đẹp vào hình 2:

Hình 2 - Trả về hiệu quả bookmark

*

Lý do trang bị tía nhằm say mê RedirectToAction () bên trên View () là triết học. framework ASP..NET MVC cung cấp một “RESTful” hình ảnh cho áp dụng của doanh nghiệp. URL không giống nhau tương ứng cùng với hành động không giống nhau. Nếu bạn trả lại Results view khi action New() được điện thoại tư vấn, sự khớp ứng giữa actions và views bị phá vỡ lẽ. Nói bí quyết khác, vào một ứng dụng RESTful, view nhưng bạn thấy được nên khớp ứng cùng với URL nhưng chúng ta nhận thấy vào tkhô nóng hệ trọng của trình để mắt tới.

Xem thêm: Cách Xóa Trình Duyệt Google Chrome, Firefox, Cốc Cốc, Gỡ Cài Đặt Google Chrome

Nếu chúng ta Gọi RedirectTokích hoạt () sau thời điểm submit các dữ liệu size, các bạn sẽ thấy Survey/Results vào thanh khô liên can của trình chú ý. Nếu các bạn Call View () sau khoản thời gian submit các tài liệu size, các bạn sẽ thấy Survey/New vào thanh khô địa chỉ của trình chuyên chú. Bởi vày ai đang coi trang Results, kịch bản thứ nhất gồm chân thành và ý nghĩa rộng. Thanh shop trình chuyên chú phải đề đạt tình trạng của vận dụng website. Làm một chuyển hướng có thể chấp nhận được bạn giữ mang đến trình ưng chuẩn và máy chủ đồng điệu.

Nếu bạn muốn thí điểm cùng với nhị cách thức submit size được bàn luận vào mẹo này, nhấp vào links sau nhằm tải về mã.https://aspblogs.blob.core.windows.net/media/stephenwalther/Downloads/Tip6/Tip6.zip


Chuyên mục: Blogs