2011-04-19 2 views
0

ViewModel의 ID가 어떤 이유로 뷰 내부에서 null로 렌더링되고있는 것은 정말 이상합니다. 응용 프로그램을 디버깅하고 뷰 모델이 실제로 AutoMapper를 사용하여 올바르게 매핑되고 모든 것이 정상인지 확인했는지 확인합니다. 그러나 @ Model.Id를 수행하면 0으로 렌더링되고 jQuery를 사용하여 값을 경고 할 때 "null"이됩니다. 무슨 일 이니?입력 된 면도기 뷰에서 Null로 렌더링되는 ID

  <div id="commentBox"> 
       @using (Html.BeginForm("Comment", "Item", new { itemId = Model.Id })) 
       { 
        <span class="greenText">answer</span> 
        <span id="hiddenForId">@this.Hidden(x => x.Id).Id("idPlaceHolder")</span> 
        <span id="commentInputBox">@this.TextBox(x=>x.CommentText).Id("commentField")</span> 
        <span id="commentButton">@this.SubmitButton("").Id("commentSubmit").Class("okButton")</span> 
       } 
      </div> 

     <div style="clear:both"></div> 
    </div> 
</div> 

<script type="text/javascript"> 
    $(function() { 
     alert($("idPlaceHolder").html()); 
     $("#commentSubmit").click(function() { 
      var dataObj = { 'commentText': $("#commentField").val(), 'itemId': $("idPlaceHolder").html() } 
      $.ajax({ 
       url: '/Item/Comment', 
       data: dataObj, 
       type: 'POST', 
       success: function (result) { 
        if (result.redirectTo != null && result.redirectTo != '') { 
         window.location.href = result.redirectTo; 
        } else { 
         alert(result.error); 
        } 
       } 
      }); 
      return false; 
     }); 
    }); 
</script> 

P .: 사이드 노트에 양식을 게시 할 필요가없고 돌봐 주었다고 어떻게 설명합니까? 나는 그것을 기억할 수 없다 ... 확실히 다른 것일 것이다. return false;

+1

false를 반환하는 대신 e.preventDefault()를 사용해야합니다. –

+0

@Robin Clowers : 아! 이것은 정확히 내가 찾고 있던 방법 이었지만 그것이 무엇인지를 기억할 수 없었습니다. Robin, +1에 감사드립니다. :) – Kassem

답변

0

좋아 나는 마지막으로 잘못 무슨 일이 있었는지 알아 냈어요 : 나는 $("idPlaceHolder").html() 대신 $("#idPlaceHolder").val()의 사용되었다

$(function() { 
    alert($("#idPlaceHolder").val()); 
    $("#commentSubmit").click(function() { 
     var dataObj = { 'commentText': $("#commentField").val(), 'itemId': $("#idPlaceHolder").val() } 

... 구문 오류!

0

부분 응답 : 양식의 onsubmit 이벤트에서 false를 반환하면 양식이 제출되지 않을 것이다.

0

보기를 표시하기 직전에 모델에 ID 값이 있습니까? 이 경우 게시물에 있습니까? 그렇다면 문제가 있고 리디렉션없이 양식을 다시 표시하는 경우 MVC는 오류를 가정합니다. 새 레코드를 만들고 있다고 가정하고 메모 ID가 원래 null 인 경우 게시 된 값에 있던 내용을 사용합니다. 게시/재발행 중에 이것이 아니라면이 대답은 적용되지 않습니다.

+0

아니,이 게시물을 다시하는 동안되지 않습니다. 이 모든 것은 처음에 뷰를 렌더링 할 때 발생합니다. 다른 모든 속성이 올바르게 렌더링되지만 ID 만 null로 렌더링됩니다. – Kassem

관련 문제