AJAX çağrısı aracılığıyla dinamik olarak yüklenen kısmi bir görünümle çalışmak için göze çarpmayan jquery doğrulamasını almaya çalışırken sorunlar yaşıyorum.
Şansım olmadan bu kodu çalıştırmak için günler harcıyorum.
İşte Görünüm:
@model MvcApplication2.Models.test
@using (Html.BeginForm())
{
@Html.ValidationSummary(true);
<div id="res"></div>
<input id="submit" type="submit" value="submit" />
}
Kısmi Görünüm:
@model MvcApplication2.Models.test
@Html.TextAreaFor(m => m.MyProperty);
@Html.ValidationMessageFor(m => m.MyProperty);
<script type="text/javascript" >
$.validator.unobtrusive.parse(document);
</script>
Model:
public class test
{
[Required(ErrorMessage= "required field")]
public int MyProperty { get; set; }
}
Kontrol eden, denetleyici:
public ActionResult GetView()
{
return PartialView("Test");
}
ve son olarak, javascript:
$(doument).ready(function () {
$.ajax({
url: '/test/getview',
success: function (res) {
$("#res").html(res);
$.validator.unobtrusive.parse($("#res"));
}
});
$("#submit").click(function () {
if ($("form").valid()) {
alert('valid');
return true;
} else {
alert('not valid');
return false;
}
});
Doğrulama çalışmıyor. Metin kutusuna herhangi bir bilgi girmesem bile, gönderme olayı uyarıyı ('geçerli') gösteriyor.
Ancak, görünümü dinamik olarak yüklemek yerine @Html.Partial("test", Model)
, kısmi Görünümü ana Görünümde işlemek için kullanıyorsam (ve AJAX çağrısını yapmıyorum), o zaman doğrulama gayet iyi çalışıyor.
Bunun nedeni muhtemelen içeriği dinamik olarak yüklersem, kontrollerin henüz DOM'da mevcut olmamasıdır. Ama $.validator.unobtrusive.parse($("#res"));
onaylayıcıya yeni yüklenen kontroller hakkında izin vermek için yeterli olması gereken bir arama yapıyorum ...
Biri yardım edebilir mi ?