2010-08-12 23 views
5

Tôi có hai nút trên một biểu mẫu duy nhất. Một được sử dụng để gửi biểu mẫu trong khi biểu mẫu còn lại được sử dụng để tìm kiếm. Tôi không muốn nút tìm kiếm kích hoạt bất kỳ xác thực phía máy chủ hoặc phía máy khách nào.Làm thế nào tôi có thể làm "reasonvalidation = false" trong ASP.NET MVC 2?

Làm thế nào tôi có thể làm điều này?

Cảm ơn.

Sửa

Tôi đang sử dụng dữ liệu Chú thích trên máy chủ để xác nhận, ví dụ:

[Required(ErrorMessage = "Institution is required")] 
    [Range(1, 2, ErrorMessage="Please select an institution")] 
    [DisplayName("Institution")] 
    public int InstitutionId { get; set; } 

Và trên máy khách Tôi đang sử dụng này:

<% Html.EnableClientValidation(); %> 
+0

Ở đâu? Bạn có cần tắt javascript và C# không? Bạn đang sử dụng gì để xác thực ngay bây giờ? FluentValidation, MVC2 Model Binder, Chú thích dữ liệu, IDataError? Hướng dẫn sử dụng? – jfar

+0

Đã cập nhật bài đăng gốc, cảm ơn. – Mike

Trả lời

5

Để vô hiệu hóa xác thực phía máy khách cho nút tìm kiếm của bạn, thêm tập lệnh như thế này vào trang của bạn:

<script type="text/javascript"> 
    document.getElementById("searchButton").disableValidation = true; 
</script> 

Xác thực phía ứng dụng khách sẽ không chạy nếu nút kích hoạt có trường được gọi là "disableValidation" được đánh giá là đúng. Ở phía máy chủ, câu hỏi của bạn khó hơn một chút để trả lời bởi vì tất cả phụ thuộc vào việc bạn đang làm mô hình ràng buộc và phương thức điều khiển của bạn khi ai đó nhấp vào nút tìm kiếm đó. Một lựa chọn có thể là chỉ để xóa bỏ tất cả các lỗi từ ModelState ... đây là một phương pháp để làm điều đó:

private static void ClearErrors(ModelStateDictionary modelState) 
{ 
    foreach (var key in modelState.Keys) 
    { 
     modelState[key].Errors.Clear(); 
    } 
} 

Nếu bạn đăng một số mẫu mã từ điều khiển của bạn, tôi có thể cố gắng để đưa ra một câu trả lời tốt hơn.

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