MVC 2.0模型绑定是否可以使用Ajax请求?
我只是使用Ajax.BeginForm发送一个正常的POST请求...我使用.TextBoxFor和.HiddenFor等输出表单元素...所有我应该...当它通过ajax发布到我的动作方法中,操作方法中的对象(名为“Comment”)未使用值填充!MVC 2.0模型绑定是否可以使用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) %>
这里是操作方法,这引起了错误...该错误是一个空引用异常当我尝试使用对象:
Function UpdateComment(ByVal UpCom As Comment) As ActionResult
昏暗分贝=新FPicDataContext 点心可更新=(从c在db.Comments凡c.CommentID = UpCom.CommentID).FirstOrDef ault Updatable.Comment = UpCom.Comment'这是哪里的对象是NULL错误提出!基本上,UPCOM的所有价值(如评论)都是0或者什么都没有。 db.SubmitChanges()
昏暗厘米=新CommentModel借助{的.comment = UPCOM,.CommentDivId = “CommentDiv” & UpCom.CommentID.ToString}
返回PartialView( “注释”,厘米)
End Function
我最终解决了这个问题,结果是模型在动作参数中绑定的对象名称必须与您在执行TextBoxFor BeginForm等时使用的对象名称相同的名称......测试,确认,就是这样!
所以,换句话说,UpCom
必须命名为Comment
而不是:)。但是,请注意,在任何地方,任何文档或任何东西我都没有听说过这个要求!任何人对此有任何想法?
为什么任何人都会投票给我们一个答案,当时我们为任何可能发现它有用的人提供了答案,我本来可以说什么都没有,以这种方式离开它,它不会给我提供答案。我认为SO有很多程序员势利的人,在试图在他人生活的其他方面看上去优于其他人时试图贬低别人,在60个问题之后,我看到了这一切真的,过分地讨厌程序员,他们只是充满了自己。这对一般程序员来说有什么意义?好奇! – 2010-10-29 22:17:53
等待我想我明白你现在要做的事情,答案是绝对的。
有几个jQuery插件可以抓取,这将允许使用Ajax发布表单。
我用过这个,它工作正常。 jQuery Form Plugin 这可能也适合你。 .submit
@ Erx_VB.NExt.Coder我回复了这个观点,因为我偶然发现了其他的东西,并最终遇到同样的问题,但措辞并不是最清楚的,所以我想更新并尝试提供帮助。在我的例子我遍历一个调查结果经由
foreach (var row in Model.Findings) /* Doesn't Work */
.
.
.
<td> <%: Html.TextAreaFor(m => row.Description)%> </td>
和我的控制器对象:
public void Update(ReportFindingViewModel Finding)
和打印字段出在表的内部。我得到的点击回到每当我张贴的动作,但就像你说的,对象为null:
<%: Ajax.BeginForm("Update", "ReportFinding", new AjaxOptions { HttpMethod = "Post" })%>
正如你解释,这是所有的名字,但我想说明的是,它的您在域中绑定的lambda表达式的名称。当我把它改为:
foreach (var Finding in Model.Findings) /* Does Work */
.
.
.
<td> <%: Html.TextAreaFor(m => Finding.Description)%> </td>
的ModelBinding自动神奇地想通了这一切。我完全不熟悉使用包含的ms ajax功能,而完全是mvc的新功能,但这有所帮助。谢谢!
@senseilhitokiri非常感谢你的阐述,我很高兴这是有用的,并投票给你,让人们可以看到你的答案进一步澄清:)。另外,如果我正确记住了这个问题,我不认为mvc喜欢它,当你使用父母和子对象/属性相同的名字时,比如我使用了“Comment.Comment”,其中第一个注释是对象,第二个是字符串。 – 2011-07-09 16:50:41
我会期待这个工作! ??? – jwwishart 2010-02-23 02:33:02
请使用您的视图的POST操作方法代码和HTML输出。 – LukLed 2010-02-23 02:56:47
你好,我更新了与请求的详细信息的原始文章:) – 2010-02-23 04:30:35