Chúng tôi thường gặp sự cố với trình xác thực .NET trên các phần tử được ẩn bằng javascript/css (ví dụ: display: none)Bỏ qua trình xác thực .NET nếu phần tử bị ẩn (hiển thị: không)
Ví dụ (có thể có lỗi cú pháp, nhưng đừng lo lắng về điều đó)
<asp:CheckBox ID="chkNewsletter" runat="server" Checked="true" />
...
<div id='newsletterOnly'>
<asp:TextBox ID="txtEmail" runat="server" />
<asp:RequiredFieldValidator ID="vldEmail" ControlToValidate="txtEmail" ErrorMessage="Required" runat="server" />
</div>
với JavaScript:
$('#chkNewsletter').changed(function() {
$(this).is(':checked') ? $('#newsletterOnly').show() : $('#newsletterOnly').hide();
});
nó không nên xác nhận txtEmail nếu nó bị ẩn.
Bạn không thể gửi biểu mẫu nếu newsletterOnly là ẩn, vì RequiredFieldValidator vẫn còn hiệu quả eventhough nó được ẩn :(
Và thậm chí bạn không thể nhìn thấy thông báo lỗi validator bởi vì nó được ẩn
Liệu có cách nào để khắc phục điều này?
tôi cố gắng để tránh PostBacks cải thiện trải nghiệm người dùng.
tôi ước gì tôi có thể sửa đổi NET javascript để xác nhận điều khiển chỉ khi họ có thể nhìn thấy.
Bạn đã thử tắt các thành phần ẩn chưa? Tôi muốn _expect_ đó là giải pháp. –
Điều gì về khả năng sử dụng hai mô hình chế độ xem khác nhau khi đăng lên máy chủ: một cho mỗi tình huống khác nhau? Bạn chỉ cần đăng lên hai tuyến đường khác nhau. – Eli
Hoặc bạn sẽ cần thực hiện xác thực trong javascript, thay vì trên máy chủ. – arcynum