Tôi đã có một ứng dụng web ASP.NET 2.0 được điều hướng một phần bằng cách sử dụng các điều khiển DropDownList
. Khi một trong số chúng được thay đổi, nó sẽ tạo ra một postback, sau đó được chuyển hướng đến một URL khác tùy thuộc vào những gì đã được chọn trong trình đơn thả xuống.ASP.NET postback từ danh sách thả xuống sai sau khi sử dụng trình duyệt Quay lại nút
Tôi đã nhận thấy hành vi lạ khi sử dụng nút Quay lại của trình duyệt sau khi sử dụng menu thả xuống. Thủ tục này là:
- Thực hiện lựa chọn trong một trong các menu thả xuống, gây ra postback và chuyển hướng. Tốt cho đến nay.
- Nhấp vào nút Quay lại của trình duyệt.
- Trong menu thả xuống điều hướng khác bên dưới hình ảnh được sử dụng trước (tất cả chúng đều có trong một
div
), hãy chọn. Trang này chuyển hướng đến cùng một URL như lần đầu tiên, không phải trang đích sẽ chuyển hướng đến dựa trên menu thả xuống khác này.
Tôi đã thử điều này trong cả Firefox 10 và IE9 và thấy điều tương tự. Tôi nhìn vào tab Net trong Firebug và thấy rằng trong POST cho bước 3, kiểm soát chính xác được tham chiếu. Nhưng khi tôi gỡ lỗi nó, trình xử lý sự kiện cho trình đơn thả xuống sai (cái được sử dụng trong bước 1) sẽ kích hoạt.
Mã này khá đơn giản và dễ hiểu. Ví dụ về đánh dấu:
<asp:DropDownList runat="server" ID="ddlTest" AutoPostBack="true" />
Danh sách thả xuống thực sự không đơn giản là <asp:DropDownList ... />
phần tử; Tôi đang chèn optgroup
các phần tử có cách tiếp cận tương tự như this.
Ví dụ về C#:
ddlTest.Click += new EventHandler(ddlTest_SelectedIndexChanged);
Và trong ddlTest_SelectedIndexChanged
:
if (ddlTest.SelectedValue != "")
{
Response.Redirect(MyUtilClass.GetUrl(ddlTest.SelectedValue));
}
gì đang xảy ra ở đây?
CẬP NHẬT 2/6/2012: Tôi đã khắc phục điều này bằng cách kiểm tra nội dung của Request["__EVENTTARGET"]
trong trình xử lý sự kiện SelectedIndexChanged
của tôi. Tôi vẫn tò mò tại sao nó lại xảy ra. Tại sao sự kiện đầu tiên lặp lại? Và tại sao nó chỉ xảy ra khi postback thứ hai xảy ra từ một điều khiển bên dưới cái đầu tiên?
Bạn có thể thêm các thẻ từ trang cho menu thả xuống không? Sẽ giúp đỡ. –
Thẻ cho menu thả xuống? Bạn có nghĩa là ID của họ trên trang? Hoặc đánh dấu của họ? Nó khá giống với đánh dấu tôi đã đăng trong câu hỏi. –
Chỉ cần một gợi ý: Nav của bạn không thể hiện những gì tôi muốn gọi hành vi mong đợi ngay cả khi không sử dụng nút quay lại. Thông thường, nav được cho là được đồng bộ hóa với nội dung của bạn. Như vậy khi bạn nhấp vào tên trường, trường đó được chọn trong danh sách thả xuống của bạn. Trên thực tế, tôi càng nhìn nó càng cảm thấy * tắt *. Như thể bạn có thể loại bỏ toàn bộ điều hướng bên trái (chụp lại bất động sản đó) và cung cấp hai trình đơn thả xuống ở trên cùng: trường học và thể thao. Những người khác hoàn toàn phụ thuộc vào thông tin đó anyway ... $ 0,02 cho những gì giá trị của nó. – NotMe