2010-04-19 28 views
5

Tôi đang sử dụng chức năng xác thực ứng dụng của khung MVC 2.0 (với Html.ValidationMessageFor()Html.EnableClientValidation()).Xác thực ứng dụng khách ASP.NET MVC với chế độ xem một phần và Ajax

Mọi thứ đều tốt đẹp, khi tôi sử dụng xác thực dưới dạng đơn giản.

Nhưng khi tôi nhận được mẫu đơn này qua jQuery Ajax

$.get('PathToMyForm', function(htmlResult) { 
    $('selector').html(htmlResult); 
}); 

xác nhận khách hàng không hoạt động. Tại sao?

+0

* Cách hoạt động * không hoạt động? Các trường mới không được xác nhận? Không có gì được xác nhận? Mã xác thực ở đâu? Trong một phần? Trong trang chứa? Một chút mã và giải thích sẽ hữu ích. – tvanfosson

+0

tvanfosson, Tôi có mô hình với thuộc tính [Bắt buộc]. Trong kịch bản chung (không có AJAX, chỉ cần Html.RenderPartial) xác thực ứng dụng hoạt động tốt - nếu tôi nhập chuỗi rỗng trong hộp văn bản và tập trung vào hộp văn bản khác, tôi nhận được thông báo xác thực. Nhưng với AJAX - tôi không nhận được thông báo này. – griZZZly8

Trả lời

0

Tôi đã gặp sự cố với xác thực MVC và xem một phần. Tôi đã sắp xếp nó ra bằng cách sử dụng jquery.validate.js thay vì việc xác thực máy khách tích hợp. Bạn có thể thử điều đó.

+0

jQuery.validate không thể xem mô hình của tôi. Tôi muốn xác định các quy tắc xác nhận trong các lớp mô hình. – griZZZly8

+0

Bạn có thể làm như vậy. Kiểm tra ASP.NET MVC Futures http://aspnet.codeplex.com/releases/view/41742 –

0

Có lẽ jQuery không đánh giá mã JavaScript trên phản hồi Ajax?

Hãy thử sử dụng tài sản datatype trên cuộc gọi Ajax,

$.get('PathToMyForm', {dataType 'html'}, function(htmlResult) { 
    $('selector').html(htmlResult); 
}); 

Từ jQuery documentation:

datatype Mặc định: Guess thông minh (xml, json, kịch bản, hoặc html)

Các loại dữ liệu mà bạn đang mong đợi từ máy chủ. Nếu không có quy định nào, jQuery sẽ thông minh cố gắng để có được kết quả, dựa trên kiểu MIME của phản hồi (một kiểu MIME XML sẽ tạo ra XML, trong 1,4 JSON sẽ sinh ra một đối tượng JavaScript, trong kịch bản 1.4 sẽ thực thi kịch bản và bất cứ thứ gì khác sẽ được trả về dưới dạng chuỗi).

+0

Rafael Mueller, cảm ơn vì câu trả lời của bạn, nhưng nó không giúp tôi. Tôi đã bao gồm cảnh báo ('kiểm tra tập lệnh') vào chế độ xem một phần của tôi - nó hoạt động. Nhưng tôi vẫn gặp vấn đề với việc xác thực. – griZZZly8

8

Nếu bạn đang sử dụng jquery.validate (đặc biệt là với MVC) và bạn đang tải trang qua AJAX, bạn cần phải thực hiện cuộc gọi sau đây sau khi tải trang:

$.validator.unobtrusive.parse($("#validation")); 

Xem thêm tại bài viết trên blog của tôi: Using Unobtrusive jQuery Validation with Forms Loaded via AJAX

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