ฉันมีปัญหาในการพยายามรับการตรวจสอบความถูกต้อง jquery ที่ไม่สร้างความรำคาญเพื่อทำงานกับมุมมองบางส่วนที่โหลดแบบไดนามิกผ่านการเรียก AJAX
ฉันใช้เวลาหลายวันในการพยายามทำให้รหัสนี้ทำงานโดยไม่มีโชค
นี่คือมุมมอง:
@model MvcApplication2.Models.test
@using (Html.BeginForm())
{
@Html.ValidationSummary(true);
<div id="res"></div>
<input id="submit" type="submit" value="submit" />
}
มุมมองบางส่วน:
@model MvcApplication2.Models.test
@Html.TextAreaFor(m => m.MyProperty);
@Html.ValidationMessageFor(m => m.MyProperty);
<script type="text/javascript" >
$.validator.unobtrusive.parse(document);
</script>
นางแบบ:
public class test
{
[Required(ErrorMessage= "required field")]
public int MyProperty { get; set; }
}
ตัวควบคุม:
public ActionResult GetView()
{
return PartialView("Test");
}
และสุดท้ายจาวาสคริปต์:
$(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;
}
});
การตรวจสอบความถูกต้องไม่ทำงาน แม้ว่าฉันจะไม่กรอกข้อมูลใด ๆ ในเท็กซ์บ็อกซ์ แต่เหตุการณ์ส่งจะแสดงการแจ้งเตือน ('ถูกต้อง')
อย่างไรก็ตามหากแทนที่จะโหลดมุมมองแบบไดนามิกฉันใช้ @Html.Partial("test", Model)
การแสดงผลมุมมองบางส่วนในมุมมองหลัก (และฉันไม่ได้เรียก AJAX) การตรวจสอบความถูกต้องก็ใช้ได้ดี
อาจเป็นเพราะถ้าฉันโหลดเนื้อหาแบบไดนามิกการควบคุมยังไม่มีอยู่ใน DOM แต่ฉันโทรไป $.validator.unobtrusive.parse($("#res"));
ซึ่งน่าจะเพียงพอที่จะให้ validator เกี่ยวกับตัวควบคุมที่โหลดใหม่ ...
ใครสามารถช่วย?