2010-03-08 7 views
2

ASP.NET MVC에서 작은 간단한 웹 사이트를 구축하기 시작했습니다. 부분 뷰를 사용하고있는 페이지에서 부분 뷰는 간단한 양식을 나타냅니다. 버튼을 클릭하고 첫 번째 시간을 클릭하면 성공으로 제출되고 유효성 검사 메시지 (내용이 유효하지 않은 경우)로 부분보기를 반환하지만 다시 시도하려는 경우 작업이 다시 호출되지 않습니다. 어떤 아이디어?ASP.NET MVC 부분 뷰가 내 작업을 호출하지 않습니다.

보기 : 컨트롤러의

<form action="<%= Url.Action("ChangePassword", "Account") %>" method="post" id="jform"> 
    <div> 
     <fieldset> 
      <legend>Account Information</legend> 
      <p> 
       <label for="currentPassword">Current password:</label> 
       <%= Html.Password("currentPassword") %> 
       <%= Html.ValidationMessage("currentPassword") %> 
      </p> 
      <p> 
       <label for="newPassword">New password:</label> 
       <%= Html.Password("newPassword") %> 
       <%= Html.ValidationMessage("newPassword") %> 
      </p> 
      <p> 
       <label for="confirmPassword">Confirm new password:</label> 
       <%= Html.Password("confirmPassword") %> 
       <%= Html.ValidationMessage("confirmPassword") %> 
      </p> 
      <p> 
       <input type="submit" value="Change Password" /> 
      </p> 
     </fieldset> 
    </div> 
</form> 
<!--<% } %>--> 
</div> 

<script> 
    $(function() { 
     $('#jform').submit(function() { 
      $('#jform').ajaxSubmit({ target: '#FmChangePassword' }); return false; 
     }); 
    }); 

    /*$(document).ready(function() { 
    $('#jform').live('submit', function() { 
      $.post($(this).attr('action'), $(this).serialize(), function(data) { 
       $("#jform").replaceWith($(data)); 
      }); 
      return false; 
     }); 
    });*/ 

</script> 

부 :

 if (!ValidateChangePassword(currentPassword, newPassword, confirmPassword)) 
     { 
      return PartialView(ViewData);     
     } 

답변

1

를 사용하여 불을 지르고, 반환 된 HTML 보면 모든 것이 OK인지 확인합니다. FireBug의 콘솔을 체크하여 두 번째로 클릭 할 때 어떤 데이터 (그리고 어디에)가 게시되는지 확인하십시오.

+0

힌트를 보내 주셔서 감사합니다. 제가 해냈습니다. 방금 생각한 문제가 있습니다. 나중 부분보기로 돌아 오면 양식에는 작업 속성에는 작업 이름이 포함되지만 컨트롤러에는 포함되지 않습니다. 대신 : <폼 ID = "jform"방법 = "게시물"행동 = "계정 /과 changepassword"> 이 <폼 ID = "jform"방법 = "게시물"행동을 반환 = "과 changepassword" > 시스템이이를 수행하기 때문에 아이디어가 있습니까? jQuery를 사용하여 컨트롤러를 할당 할 수 있습니까 ??? 미리 감사드립니다. Johannes – john84

+0

아마도 생성자의 viewdata 객체없이 "return PartialView()"만 반환하면됩니다. 그것이 원인 일 수 있습니다. – Gidon

+0

아니요 그냥 시도해 보았습니다. 생성자 호출에서 viewData를 삭제하더라도 문제가 존재합니다. – john84

0

부분보기에서 Javascript를 사용할 수 없습니다. 부모보기에서 정의해야합니다

관련 문제