-1

Javascript 코드뿐만 아니라 내 Html 코드도 다음과 같습니다. usercontroller에서매번 표시되는 오류 메시지입니다. MVC 프로젝트에서 Jquery 유효성 검사기 사용

<h2>Register</h2> 

@using (Html.BeginForm()) 
{ 
    @Html.ValidationSummary(true) 

    <fieldset class="acloginform"> 
     <legend>Register User</legend> 

     <ol> 
      <li> 
       <div class="editor-label"> 
        @Html.LabelFor(model => model.Email_Id) 
       </div> 
       <div class="editor-field"> 
        @Html.TextBoxFor(model => model.Email_Id, new { @id = "txt_EmailId" }) 
        @Html.ValidationMessageFor(model => model.Email_Id) 
       </div> 
      </li> 
      <li> 
       <div class="editor-label"> 
        @Html.LabelFor(model => model.FirstName) 
       </div> 
       <div class="editor-field"> 
        @Html.TextBoxFor(model => model.FirstName) 
        @Html.ValidationMessageFor(model => model.FirstName) 
       </div> 
      </li> 
      <li> 
       <div class="editor-label"> 
        @Html.LabelFor(model => model.LastName) 
       </div> 
       <div class="editor-field"> 
        @Html.TextBoxFor(model => model.LastName) 
        @Html.ValidationMessageFor(model => model.LastName) 
       </div> 
      </li> 
      <li> 
       <div class="editor-label"> 
        @Html.LabelFor(model => model.Password) 
       </div> 
       <div class="editor-field"> 
        @Html.EditorFor(model => model.Password) 
        @Html.ValidationMessageFor(model => model.Password) 
       </div> 
      </li> 
      <li> 
       <div class="editor-label"> 
        @Html.LabelFor(model => model.ConfirmPassword) 
       </div> 
       <div class="editor-field"> 
        @Html.EditorFor(model => model.ConfirmPassword) 
        @Html.ValidationMessageFor(model => model.ConfirmPassword) 
       </div> 
      </li> 
      <li> 
       <input type="submit" value="Register" /> 
       @Html.ActionLink("Back to Home Page", "Index", new { Controller = "Home" }, new { @class = "regislnk" }) 
      </li> 
     </ol> 
    </fieldset> 
} 

@section Scripts { 
    @Scripts.Render("~/bundles/jqueryval") 
} 

<script type="text/javascript"> 

    $(document).ready(function() {   

     jQuery.validator.addMethod("Duplicate_EmailId", function (value) { 
      $.ajax({ 
       url: '/User/CheckEmailId?EmailId=' + value, 
       async: false, 
       success: function (data) { 
        alert(data); 
        if (data == true) 
         return false; 
        else 
         return true; 
       }, 
      });   


     }, "Email Id already Exists"); 

     $('#txt_EmailId').addClass('Duplicate_EmailId');  
    }); 

</script> 

내 C# 방법은 여기

public JsonResult CheckEmailId(string EmailId) 
{ 
    var res = my method; 
    return Json(res, JsonRequestBehavior.AllowGet); 
} 

오류 메시지가 모든 결과의 성공/실패에 표시된다. 그 방법은

두 번 호출합니다. 텍스트 상자 및 양식 제출의 흐림 효과. 그게 당신이 아니라 검증 방법에서 아약스 방법에서 참/거짓 반환하는 거짓

jQuery.validator.addMethod("Duplicate_EmailId", function (value) { 

    // returning nothing here, means validation fails 

}, "Email Id already Exists"); 

을 반환처럼 그래서

+0

귀하의 HTML 코드는 어디입니까 ?? – NetStarter

+1

질문이 HTML – Kartheek

+0

으로 업데이트되었습니다.이 경고 (데이터)를 처음 작성한 후 다시 데이터를 검사하고 있습니까? == 참인지 아닌지와 false를 반환합니까 ??? 그리고 나는 그것이 사실과 비교하고 싶다면 === 필요하다고 생각합니다. – NetStarter

답변

0

귀하의 즉각적인 문제는 당신이, 당신이 당신의 검증 방법에서 아무것도 반환하지 않는 것입니다 아약스가 호출되는 동안은 다른 분야의 작성에서 사용자를 비활성화되므로,이 같은 false로 비동기 두는 것은 적합하지 않습니다 말할 것이

jQuery.validator.addMethod("Duplicate_EmailId", function (value) { 

    var validationResult = false; 

    $.ajax({ 
     url: '/test/CheckEmailId?EmailId=' + value, 
     async: false, 
     success: function (data) { 
      console.log(data); 
      if (data == true) 
       validationResult = false; 
      else 
       validationResult = true; 
     }, 
    }); 

    return validationResult; 

}, "Email Id already Exists"); 

하지만 같은 뭔가가 필요 . 원격 메소드의 구현에 들어간 영리한 것들이 있으므로 비동기적일 수 있습니다. 사용할 수있는 경우 플러그인의 원격 메소드를 사용하십시오.

관련 문제