2010-02-05 32 views
5

Tôi đang gặp sự cố khi tôi có biểu mẫu thêm/chỉnh sửa đơn giản và sử dụng xác thực phía máy khách (jQuery/MicrosoftMvcJQueryValidation.js) được tạo từ chú thích dữ liệu và được bật phía khách hàng bằng cách gọi sau đây trong quan điểm của tôi:Thuộc tính bắt buộc cho kiểu giá trị bool khi được sử dụng làm hộp kiểm

<% Html.EnableClientValidation(); %> 

Điều này dường như làm việc tốt cho hầu hết các yếu tố, tuy nhiên tôi có một thể hiện nơi tôi có một tài sản boolean được trả lại như một hộp kiểm sử dụng:

<%= Html.EditorFor(model => model.Chargeable)%> 

Điều nào có thể đúng/sai (được đánh dấu/không đọc).

Vì bool là một loại giá trị và không thể rỗng, nó được hiển thị dưới dạng thuộc tính bắt buộc và hiển thị lỗi (phía máy khách) khi biểu mẫu được gửi đọc "Trường có thể tính phí là bắt buộc". Tuy nhiên, HTML được tạo ra là hai phần (cả hộp kiểm và giá trị ẩn) nó sẽ vượt qua xác nhận lại bài đăng.

Sau khi duyệt mã nguồn MVC 2, tôi đã quản lý để đặt một "nhanh chóng và dơ bẩn" khắc sâu vào trong phút chốc, mà là để thiết lập:

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false; 

Bất kỳ ai có bất kỳ ý tưởng hoặc gợi ý về cách tôi có thể giải quyết vấn đề này?

IMO, tôi không nghĩ MVC nên đặt trình xác thực yêu cầu phía máy khách cho hộp kiểm được hiển thị bằng cách sử dụng các phương thức Html.EditorFor/Html.CheckBox (For).

Lưu ý: Tôi đang sử dụng ASP.NET MVC 2 RC2 và MicrosoftMvcJQueryValidation.js từ bản phát hành tương thích MVC tương ứng.

Trả lời

5

Tôi cho rằng cách dễ nhất xử lý đó là để gọi các quy tắc ("loại bỏ", [Quy Định]) chức năng trên các yếu tố (chủ yếu là hộp kiểm) mà tôi muốn loại bỏ các xác nhận client-side từ:

<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#Chargeable').rules('remove', 'required'); 
    }); 
</script> 
Các vấn đề liên quan