我只是使用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 :)。

但是,请注意,我在任何地方,任何文档或任何内容中都没有听说过此要求!!有人对此有任何想法吗?

10-07 19:54