Saya mengalami masalah saat mencoba mendapatkan validasi jquery yang tidak mengganggu untuk bekerja dengan tampilan parsial yang dimuat secara dinamis melalui panggilan AJAX.
Saya telah menghabiskan waktu berhari-hari mencoba membuat kode ini berfungsi tanpa hasil.
Berikut Tampilannya:
@model MvcApplication2.Models.test
@using (Html.BeginForm())
{
@Html.ValidationSummary(true);
<div id="res"></div>
<input id="submit" type="submit" value="submit" />
}
Pandangan Parsial:
@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; }
}
Pengendali:
public ActionResult GetView()
{
return PartialView("Test");
}
dan terakhir, 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;
}
});
Validasi tidak berfungsi. Bahkan jika saya tidak mengisi informasi apa pun di texbox, acara kirim menunjukkan peringatan ('valid').
Namun, jika alih-alih memuat tampilan secara dinamis, saya gunakan @Html.Partial("test", Model)
untuk membuat Tampilan parsial di Tampilan utama (dan saya tidak melakukan panggilan AJAX), maka validasi berfungsi dengan baik.
Ini mungkin karena jika saya memuat konten secara dinamis, kontrolnya belum ada di DOM. Tapi saya melakukan panggilan $.validator.unobtrusive.parse($("#res"));
yang seharusnya cukup untuk membiarkan validator tentang kontrol yang baru dimuat ...
Adakah yang bisa membantu?