2014-03-05 3 views
1

이 질문에 100 번 답변을 드리며 모두 읽었지만 유효성 검사가 실패한 후에도 양식이 제출됩니다. 나는 1.9.0보다 높은 jquery.validate를 사용하지 않는 것에 대한 참조를 발견했다. 그래서 나는 (1.11을 사용하고 있었지만) 변경하지 않았다.유효성 검사 실패 후 MVC 양식이 제출됩니다.

유효하지 않은 양식 (제출 한 내용 없음)과 함께 제출하면 오류 메시지가 나타나고 양식이 제출됩니다.

나는 과거에 두 번 유효성 검사를 성공적으로 구현했으며, 이번에는 어떤 것이 다른지 알 수 없습니다. 나는 신선한 머리카락이 무언가를 볼 수 있기를 바랄 때부터 머리를 두드리는 일을 중단해야한다.

--Scripts :

<script src="@Url.Content("~/Scripts/jquery-1.9.1.min.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/jquery-ui-1.10.1.min.js")" type="text/javascript"></script> 

    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

모델 :

[Display(Name = "First Name *")] 
    [StringLength(20)] 
    [Required(ErrorMessage = "Required.")] 
    public string FirstName { get; set; } 

    [Remote("CheckDuplicatePerson", "Validation", AdditionalFields = "FirstName", ErrorMessage="Person Exists")] 
    [Display(Name = "Last Name *")] 
    [StringLength(30)] 
    [Required(ErrorMessage = "Required.")] 
    public string LastName { get; set; } 

보기 :

<div class="PersonForm"> 

      @using (Html.BeginForm("AddPerson", "Person", FormMethod.Post)) 
      { @Html.ValidationSummary(true) 
     <div id="editor-left"> 
       <div class="formGroup"> 
        <div class="editor-label"> 
          @Html.LabelFor(model => model.FirstName) 
        </div> 
        <div class="editor-field"> 
         @Html.EditorFor(model => model.FirstName) <br /> 
         @Html.ValidationMessageFor(model => model.FirstName) 
        </div> 
       </div> 
       <div class="formGroup"> 
        <div class="editor-label"> 
         @Html.LabelFor(model => model.MiddleName) 
        </div> 
        <div class="editor-field"> 
         @Html.EditorFor(model => model.MiddleName) 
        </div> 
       </div> 
       <div class="formGroup"> 
        <div class="editor-label"> 
         @Html.LabelFor(model => model.LastName) 
        </div> 
        <div class="editor-field"> 
         @Html.EditorFor(model => model.LastName) <br /> 
         @Html.ValidationMessageFor(model => model.LastName) 
        </div> 
       </div> 



       <div class="controls"><hr /> 
        <input type="submit" class="skbutton" value="Next Page" /> 
       </div> 
      }     
    </div> 

UPDATE :

JQuery와 1.9.1 파일에 JS 오류가 이 코드 조각에 :

parseJSON: function(data) { 
    // Attempt to parse using the native JSON parser first 
    if (window.JSON && window.JSON.parse) { 
     return window.JSON.parse(data); 
    } 
+0

JavaScript 오류가 발생했는지 확인 했습니까? –

+0

좋은 생각. 좋아, jquery 1.9.1 파일에 '예기치 않은 토큰'오류가 있습니다. 오류가있는 코드를 보여주기 위해 OP를 편집했습니다. – BattlFrog

+0

CheckDuplicatePerson 원격 검증에 실패 했습니까? 유효성 검사를 제거하면 작동합니까? –

답변

1

마지막으로 작동했습니다.

@ 제라드, 원격 인증을 제거하려했지만 도움이되지 않았습니다.

마이크로 소프트 눈에 잘 띄지 않는 스크립트였습니다. 나는 그것을 업데이트했고 그것은 작동하기 시작했다. 이 모든 것들에 의존하는 훌륭한 선이있는 것 같습니다. 3.1.1

jquery.validate - - 1.11.1

jquery.validate.unobtrusive

JQuery와-1.9.1

jquery.unobtrusive - 아약스 : 여기에 작업하는 내 버전은 - 3.1.1

입력 해 주셔서 감사합니다.

0

비슷한 문제가있었습니다. 모든 입력 필드에 대해 @ Html.ValidationMessageFor (model => model.FieldName)을 두어 어떻게 든 문제가 해결됨

관련 문제