У меня была такая же проблема, и вот как я ее решил.
Откройте MicrosoftMvcJQueryValidation.js и внесите следующие изменения.
Добавить эту функцию
function __MVC_ApplyClientValidationMetadata() {
var allFormOptions = window.mvcClientValidationMetadata;
if (allFormOptions) {
while (allFormOptions.length > 0) {
var thisFormOptions = allFormOptions.pop();
__MVC_EnableClientValidation(thisFormOptions);
}
}
}
Найдите $ (document) .ready () и замените его на
$(document).ready(__MVC_ApplyClientValidationMetadata);
Теперь просто сделайте следующее
Если вы используете html (), тогда просто вызовите __MVC_ApplyClientValidationMetadata после загрузки html в элемент.
$("#someDiv").html(responseHtml);
__MVC_ApplyClientValidationMetadata();
Если вы используете load (), у вас есть другая проблема. Он удаляет все теги сценария. Поэтому вы должны сделать что-то вроде следующего.
$("#someDiv").load("/a/partialview/request" , function(response){
var scripts = $(response).filter("script");
for (var i = 0; i < scripts.length; i++) {
//executes javascript
$.globalEval(scripts[i].text);
}
__MVC_ApplyClientValidationMetadata();
});
Еще одна вещь. Убедитесь, что формы, которые вы загружаете с помощью ajax, имеют уникальный идентификатор. По умолчанию все формы получают идентификатор form0.