Nếu bạn nhìn lại vào trang thứ tự trong hình 11-7, bạn có thể nhìn thấy phần cuối của URL thân thiện là tham số có chứa các ID sản phẩm cho sản phẩm sẽ được hiển thị. Sau đó, nếu bạn nhìn vào mã trong hình 11-8, bạn có thể thấy rằng một tuyến đường năng động đã được tạo ra cho Trang này với một chuỗi rỗng là giá trị mặc định cho tham số ProductID. Điều này có nghĩa rằng các tập tin mã phía sau cho trang trật tự đã làm một cái gì đó với tham số mà nó nhận được.Hình 11-10 bắt đầu bằng cách hiển thị một phiên bản của một xử lý sự kiện tải cho trang đặt hàng. Xử lý này sẽ kiểm tra các tài sản IsPostBack, và liên kết danh sách drop¬down với các nguồn dữ liệu SQL nếu đây là tải trang, ban đầu. Đây là giống như mã trong các phiên bản trước của trang đặt hàng.Nhưng sau đó, xử lý này sử dụng bộ sưu tập giá trị của trang RouteData tài sản để có được giá trị của tham số URL tên là "productID". Nếu nó tìm thấy một, nó là tập hợp giá trị được chọn trong danh sách thả xuống tới giá trị đó. Giá trị được chọn sau đó được sử dụng bởi phương pháp ShowSelectedProduct để có được và hiển thị dữ liệu sản phẩm.Từ một quan điểm mã hóa, không có gì là sai với mã này. Nó sẽ hiển thị dữ liệu sản phẩm phù hợp khi một trang sẽ gửi một tham số URL hoặc khi riêng của mình danh sách thả-xuống bài viết trên về trang. Vấn đề là URL được hiển thị khi người dùng chọn một sản phẩm mới trong danh sách thả xuống. Ví dụ, con số 11-7 cho thấy trang được trả lại khi các id cho các sản phẩm hư hỏng con mèo đã được gửi đến trang đơn đặt hàng: /Shopping/Order/catOl. Tuy nhiên, nếu người sử dụng sau đó chọn "Hippie" từ danh sách thả-xuống, dữ liệu Hippie sẽ được hiển thị nhưng URL sẽ vẫn là /Shopping/Order/catOl.Ví dụ thứ hai trong con số này khắc phục vấn đề này bằng cách cải thiện xử lý sự kiện tải, thêm một trình xử lý sự kiện cho sự kiện SelectedlndexChanged của danh sách thả-xuống, và thêm một phương pháp AddProductldToUrlAndRedirect. Dưới đây là cách hoạt động.Khi lựa chọn thả xuống thay đổi, sự kiện tải được gọi là, nhưng tải sự kiện mã không chạy vì nó là một postback. Kết quả là, thực hiện tiếp tục với bộ xử lý sự kiện cho các sự kiện SelectedlndexChanged. Sau đó, hander này gọi phương pháp helper AddProductldToUrlAndRedirect, xây dựng một URL thân thiện dựa trên giá trị được chọn trong danh sách thả-xuống, và sau đó vượt qua URL mới với phương pháp chuyển hướng của các đối tượng phản ứng.Điều này gây ra trang để được nạp lại với URL mới, và kể từ khi nó không phải là một postback, tất cả các mã trong xử lý sự kiện tải chạy. Sau đó, kể từ khi mới URL có chứa một tham số cho các sản phẩm được lựa chọn, mã lấy nó và sử dụng nó để thiết lập giá trị được chọn và hiển thị thông tin sản phẩm.Bộ xử lý sự kiện tải sửa đổi cuộc gọi cùng một phương pháp helper khi không có productID có thể được tìm thấy trong URL, sẽ xảy ra khi người dùng đầu tiên điều hướng đến trang đặt hàng. Trong trường hợp đó, giá trị được chọn trong danh sách thả xuống sẽ là sản phẩm đầu tiên trong danh sách, do đó, đó là những gì sẽ hiển thị trên trang và trong URL sau khi tải lại trang.Điều chỉnh này sử dụng một mẫu thiết kế được gọi là mô hình (PRG) Post Redirect nhận được. Nó thường được sử dụng trong các ứng dụng ASP.NET MVC và cũng để sửa vấn đề backbutton, như bạn sẽ thấy sau này trong cuốn sách
đang được dịch, vui lòng đợi..