AJAX 호출을 통해 동적으로로드되는 부분보기로 작업하기 위해 눈에 잘 띄지 않는 jquery 유효성 검사를 시도하는 데 문제가 있습니다.
이 코드를 운없이 작동 시키려고 며칠을 보냈습니다.
보기는 다음과 같습니다.
@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;
}
});
유효성 검사가 작동하지 않습니다. texbox에 정보를 입력하지 않아도 제출 이벤트에 경고 ( '유효')가 표시됩니다.
그러나 뷰를 동적으로로드하는 대신 @Html.Partial("test", Model)
메인 뷰에서 부분 뷰를 렌더링하는 데 사용 하는 경우 (AJAX 호출을 수행하지 않음) 유효성 검사가 제대로 작동합니다.
콘텐츠를 동적으로로드하면 컨트롤이 아직 DOM에 존재하지 않기 때문일 수 있습니다. 하지만 $.validator.unobtrusive.parse($("#res"));
새로로드 된 컨트롤에 대해 유효성 검사기에게 허용하기에 충분한 호출을 합니다.
누구든지 도울 수 있습니까?