0

MVC 3의 클라이언트 측 유효성 검사를위한 바인더 제본되지 않습니다 새로 추가 된 나는 AJAX 양식 MVC에있는 3. 인덱스보기에서양식 요소가

:

<div id="ajaxcontactform"> 
     <% Html.RenderPartial("ContactForm", Model); %> 
</div> 
것은 ContactForm 부분보기에

AJAX 형태

<% using (Ajax.BeginForm("Contact", new AjaxOptions() 
{ 
    UpdateTargetId = "ajaxcontactform", 
    OnBegin = "ShowProcessing", 
    OnComplete = "HideProessing", 
    InsertionMode = InsertionMode.Replace 
})) 
{%> 
<%: Html.ValidationSummary()%> 
<%: Html.TextBoxFor(m => m.Name, new { Class = "contacttextform" })%> 
<%}%> 

내 컨트롤러 :

[HttpPost] 
    public ActionResult Contact(ContactForm form) 
    { 
     if (Request.IsAjaxRequest()) 
     { 
      // on error 
      if (!ModelState.IsValid) 
       return PartialView("ContactForm", form); 

      // TODO: My data processing code here 

      // return partial view on success 
      return PartialView("ContactForm", new ContactFormModel()); 
     } 
    } 

내 클라이언트 측 사용자 지정 유효성 검사 JavaScript 코드 : 방금 ​​마스터 페이지에서이 파일을 참조했습니다. 이 코드는 DOM이로드/생성 될 때 한 번 실행됩니다.

$.validator.addMethod("phonenumber", function (value, element, params) { 

    if (!value) 
     return true; 
    var regex = /^[\s\d\+\(\)]+$/; 
    return regex.test(value); 
    }); 
    jQuery.validator.unobtrusive.adapters.addBool("phonenumber"); 

페이지를 처음로드 할 때 내 클라이언트 측 유효성 검사가 정상적으로 작동합니다. 그러나 일단 양식을 성공적으로 제출하고 양식을 다시 제출하십시오. 클라이언트 쪽 유효성 검사가 작동하지 않고 양식이 서버 쪽의 유효성을 검사합니다.

새 요소를 추가하거나 부분 뷰를 다시 렌더링 한 후 클라이언트 측 유효성 검사를 다시 바인딩하고 싶습니다.

또한 성공적으로 제출 된 양식 값은 어떻게 정리해야합니까?

감사합니다,

답변

1

당신은 AjaxOptionsOnSuccess 방법에 가입하고 $.validator.unobtrusive.parse 방법을 사용하여 새로 추가 된 요소의 클라이언트 측 유효성 검사를 다시 연결 수 :

function OnSuccess(result) { 
    $('form').removeData('validator'); 
    $('form').removeData('unobtrusiveValidation'); 
    $.validator.unobtrusive.parse('form'); 
} 
+0

감사 대린합니다. 부분 뷰를 다시 렌더링 한 후 클라이언트 측 유효성 검사가 작동합니다. 건배 – jNet

관련 문제