2009-06-11 30 views
11

Giả sử trang TestPage.aspx có hai điều khiển. Điều khiển đầu tiên là một điều khiển địa chỉ có một nhóm xác nhận được gọi là "AddressGroup". Nhóm này chứa một số điều khiển xác thực được phân phối trong tóm tắt xác thực trên điều khiển đó. Điều khiển thứ hai là kiểm soát thẻ tín dụng và có nhóm xác thực được gọi là "CreditCardGroup". Nó cũng có một số trình duyệt tính hợp lệ và một bản tóm tắt để hiển thị các kết quả. Để thêm vào vấn đề, có một số điều khiển ngẫu nhiên trên trang cũng có trình kiểm chứng được gắn với điều khiển ValidatorSummary thứ ba.Kích hoạt nhiều nhóm xác thực bằng một nút?

Khi người dùng nhấn nút "Làm tất cả", tôi muốn trang kích hoạt cả ba nhóm xác thực. Nút có thể được gắn với một nhóm đơn lẻ hoặc một nhóm không có nhãn. Nó không thể được gắn với nhiều nhóm như xa như tôi có thể nói.

Giải pháp không phải là để trích xuất xác nhận từ các điều khiển vì điều đó sẽ làm giảm giá trị của việc có chúng trong các điều khiển riêng biệt. Cảm ơn những suy nghĩ của bạn.

Trả lời

5

Bạn có đang nói về xác thực phía máy khách hoặc phía máy chủ không? Câu trả lời của Jamie là tại chỗ cho phía máy chủ, nhưng để xác nhận phía máy khách, bạn có thể cần phải viết hàm JS của riêng bạn để kích hoạt xác nhận trên cả ba nhóm trong buổi hòa nhạc.

+7

Đối với JS, bạn có thể gọi Page_ClientValidate(), điều này sẽ kích hoạt xác nhận trên tất cả các nhóm trong trang. – Ahmed

12

Gọi phương thức Validate cho mỗi nhóm xác nhận độc lập bên trong handler click của nút:

bool isValidTest = false; 
Validate("AddressGroup"); 
isValidTest = IsValid; 
Validate("CreditCardGroup"); 
isValidTest &= IsValid; 
// etc. 
if (!isValidTest) return; 

Vấn đề tiếp theo bạn có thể gặp phải là sự kiểm soát ValidationSummary được liên kết với một nhóm xác nhận duy nhất. Cách duy nhất mà tôi đã tìm thấy để hiển thị tất cả các thông báo lỗi cho nhiều nhóm (không đi bộ cây điều khiển) là sử dụng nhiều điều khiển ValidationSummary.

Với điều khiển người dùng, bạn có thể muốn phương thức xác thực của nó thực hiện xác thực cho tất cả các điều khiển chứa và hiển thị tóm tắt của chính nó.

Đã chỉnh sửa để thêm: Biến isValidTest là không cần thiết. Theo các tài liệu:

Lưu ý rằng khi bạn gọi phương thức Validate , tài sản IsValid phản ánh tính hợp lệ của tất cả các nhóm xác nhận cho đến nay.

2

Gọi Page.Validate() về phía máy chủ nó sẽ xác nhận tất cả các xác nhận ..

Các vấn đề liên quan