내가보기 모델에 바인딩 편집기와 양식을 포함하는 강력한 형식의 MVC보기가 있습니다JQuery와 AJAX : 업데이트 뷰 모델
@model ViewModels.CommentView
@using (Ajax.BeginForm("UpdateComments", new AjaxOptions { HttpMethod="POST" }))
{
<fieldset>
<legend>Metadata</legend>
<div>
@Html.HiddenFor(model => model.Id)
<div class="editor-label">
@Html.LabelFor(model => model.Comment)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Comment)
@Html.ValidationMessageFor(model => model.Comment)
</div>
</div>
<p class="action clear">
<input type="submit" value="Save" />
</p>
</fieldset>
}
을 때의 다른 부분의 요소에 사용자가 클릭 뷰는 JQuery와 AJAX 호출은 서버에서 데이터를 검색하고 제어 업데이트 :
<script type="text/javascript">
$(".load-comments").focus(function() {
var Id = $("#Id").val();
var url = "@Url.Action("GetComment")/" + Id;
$.ajax({ url: url, success: DataRetrieved, type: 'POST', dataType: 'json' });
function DataRetrieved(data) {
if (data) {
$("#Comment").val(data.Comment);
}
};
});
</script>
가 예상대로이 기능은 작동 : 제어 내용을 시각적으로 업데이트됩니다. 그러나 기본 html 요소의 값은 업데이트되지 않으며 양식을 서버에 게시하면 뷰 모델이 비어 있습니다.
JQuery 함수에서 양식 컨트롤 값을 설정하여 서버에 다시 게시하려면 어떻게해야합니까?
HTML 페이지에서 값이 변경된 것을 보시겠습니까? 올바르게 변경되면 요소가 업데이트됩니다. – Kenneth
@Kenneth, 아니요 - 최소한 Firebug 및 마크 업 관리자는 Chrome에서 사용하지 마십시오. 그러나 브라우저에서 해당 페이지를 볼 때 필드 *가 올바르게 업데이트됩니다. –
흠, 아주 이상합니다. 값이 변경되면 개발자 도구에 표시되어야합니다. HttpFiddler와 같은 도구를 사용하여 서버로 보내지는 것을 확인할 수 있습니까? – Kenneth