Tôi đã tạo một điều khiển mục swapper bao gồm hai hộp danh sách và một số nút cho phép tôi trao đổi các mục giữa hai danh sách. Việc trao đổi được thực hiện bằng cách sử dụng javascript. Tôi cũng di chuyển các mục lên xuống trong danh sách. Về cơ bản khi tôi di chuyển các mục vào hộp danh sách bên phải tôi lưu trữ các datakeys của các yếu tố (GUIDs) trong một lĩnh vực ẩn. Ngày postback tôi chỉ cần đọc GUIDs từ lĩnh vực này. Mọi thứ đều hoạt động tốt nhưng khi đăng lại, tôi nhận được ngoại lệ sau:Các phần tử ListBox được sắp xếp lại với JavaScript gây ra lỗi xác thực sự kiện trên postback
Đối số hoặc trả lại cuộc gọi không hợp lệ. Xác thực sự kiện được bật bằng cấu hình hoặc <% @ Page EnableEventValidation = "true"%> trong một trang. Vì mục đích bảo mật, tính năng này xác minh rằng các đối số cho các sự kiện postback hoặc gọi lại bắt nguồn từ điều khiển máy chủ ban đầu được hiển thị. Nếu dữ liệu hợp lệ và được mong đợi, hãy sử dụng phương thức ClientScriptManager.RegisterForEventValidation để đăng ký dữ liệu đăng lại hoặc gọi lại để xác thực.
Tôi đã chuẩn bị một ứng dụng thử nghiệm. Tất cả những gì bạn phải làm là tải xuống bản lưu trữ và chạy dự án. Trên trang web chọn 3 mục, nhấn Thêm tất cả, sau đó di chuyển phần tử thứ ba lên một cấp và sau đó nhấn "Nút". Lỗi sẽ hiển thị. Tắt xác thực sự kiện là không có nghĩa là chấp nhận được. Bất cứ ai có thể giúp tôi, tôi đã dành hai ngày rồi mà không tìm ra giải pháp.
FYI: Tôi đã tải xuống ứng dụng của bạn và không bao giờ gặp lỗi này - tuy nhiên, tôi gặp lỗi về col1 không phải là một phần của bảng dữ liệu hoặc một cái gì đó tương tự (không nhìn vào nó ngay bây giờ). Bạn có thể muốn kiểm tra để chắc chắn rằng ví dụ của bạn gây ra lỗi này, bởi vì nó không cho tôi. –
Ngoài ra, việc 'di chuyển' qua lại không hoạt động ở tất cả trong Firefox, bạn có thể muốn đề cập đến hoặc sửa chữa nó. –
Lỗi với col1 được gây ra do destinationDT.Columns.Add ("colUID", typeof (Guid)); và destinationDT.Columns.Add ("col1", typeof (string)); chỉ được gọi nếu không đăng bài trở lại nhưng được yêu cầu khi nút được nhấp. – Aleris