这真的很奇怪,出于某种原因,ViewModel的Id在视图中呈现为null。我调试了应用程序并检查了视图模型实际上是否正确映射(使用AutoMapper),一切都很好。但是当我做@ Model.Id时,它呈现为零,当我使用jQuery警告值时,我得到“null”。那是怎么回事?
<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.S:在附注中,你如何告诉表格它不需要发布并且它已被照顾?我只是记不起来......这绝对不是return false;
答案 0 :(得分:0)
部分答案:如果您在表单的onsubmit事件上返回false,则会阻止表单提交。
答案 1 :(得分:0)
在显示视图之前 - 模型确实有ID值,对吗?在这种情况下这是在一个帖子?如果是这样 - 如果存在问题且您重新显示表单而没有重定向MVC会假定错误,它将使用发布值中的内容来回写 - 假设您正在创建新记录并且注释ID最初为null。如果在发布/重新显示期间不存在,则此答案不适用。
答案 2 :(得分:0)
好的,我终于弄清楚出了什么问题:
$(function () {
alert($("#idPlaceHolder").val());
$("#commentSubmit").click(function () {
var dataObj = { 'commentText': $("#commentField").val(), 'itemId': $("#idPlaceHolder").val() }
我使用$("idPlaceHolder").html()
代替$("#idPlaceHolder").val()
...语法错误!