我只是使用Ajax.BeginForm发送一个普通的POST请求...我使用.TextBoxFor和.HiddenFor等输出表单元素...全部都应...并且当它通过ajax发布到我的操作方法时,操作方法中的对象(名为“注释”)未填充值!
我想念什么吗?这是我的代码中与想要看的人相关的部分...
<% Using Ajax.BeginForm("UpdateComment", "Home",
New AjaxOptions With {.UpdateTargetId = Model.CommentDivId,
.HttpMethod = FormMethod.Post})%>
和....
<%= Html.HiddenFor(Function(x) x.Comment.CommentID)%>
<%= Html.TextAreaFor(Function(x) x.Comment.Comment, 8, 40,
New With {.style = "overflow: hidden;"})%>
<%= Html.ValidationMessageFor(Function(x) x.Comment.Comment) %>
这是操作方法,它会引发错误...当我尝试使用该对象时,该错误是null引用异常:
Function UpdateComment(ByVal UpCom As Comment) As ActionResult
Dim db =新的FPicDataContext
Dim可更新=(从db.Comments中的c,其中c.CommentID = UpCom.CommentID)。
Updatable.Comment = UpCom.Comment'在此对象为NULL的地方引发错误!基本上,UPCOM中的所有值(作为注释)均为0或无。
db.SubmitChanges()
Dim cm =带有{.Comment = UpCom,.CommentDivId =“CommentDiv”&UpCom.CommentID.ToString}的新CommentModel
返回PartialView(“Comment”,cm)
结束功能
最佳答案
这个问题我最终解决了,原来模型在 Action 参数中绑定(bind)到的对象名称必须与您在执行TextBoxFor BeginForm等时使用的对象名称相同。
因此,换句话说,UpCom
必须改为Comment
:)。
但是,请注意,我在任何地方,任何文档或任何内容中都没有听说过此要求!!有人对此有任何想法吗?