ASP.NET MVC 2.0:简单模型绑定不能正常工作/绑定
我有一个简单的自定义对象名称Comment(linq to sql generated one),它有各种值,但是只有两个值从HTML POST发送到我的动作,这是我接受它们的动作。
Function InsertComment(ByVal Comment As Comment) As ActionResult
' both CommentForPicID As Integer and Comment As String are the two values sent.
End Function
使用TextAreaFor命名textarea,使用HiddenFor命名隐藏ID,并检查确保我的Comment对象的属性名称与case元素的HTML ID / Name值完全匹配(case和all),两者都是CommentForPicID和Comment,没有任何前缀。
我的行动有一个断点,看看是什么时候发生的,当我的动作收到它时,整个动作中的Comment对象总是被设置为Nothing,并且最终会抛出异常,因为我正在尝试使用null对象
我已经阅读过steven sandersons MVC框架的模型绑定部分,一切都应该是有序的,有没有人有任何想法?
。 。
其他信息(不需要阅读): 然而有趣的是,如果我将Comment对象包装在父对象中,比如,CommentsParent包含一些东西&将Comment对象作为变量...然后我当然使用apporpriate前缀更改表单元素id,然后按规定工作...但我这样做只是为了测试绑定是否正常工作,并且不希望/需要这样做对于我的申请。
这是任何想要看到它的人的标记:
<%@ Control Language="VB" Inherits="System.Web.Mvc.ViewUserControl(Of FP.Comment)" %>
<%@ Import Namespace="FP" %>
<%--The line below is a workaround for a VB / ASPX designer bug--%>
<%=""%>
<% Html.EnableClientValidation()%>
<% Using Ajax.BeginForm("InsertComment", "Home", New AjaxOptions With {.UpdateTargetId = "InsertComment", .HttpMethod = FormMethod.Post})%>
<%= Html.HiddenFor(Function(x) x.CommentForPicID)%>
<%= Html.TextAreaFor(Function(x) x.Comment, 8, 40, New With {.style = "overflow: hidden;"})%><br />
<%= Html.ValidationMessageFor(Function(x) x.Comment)%>
<input type="submit" value="Save" name="SaveCancelButton"/>
<input type="submit" value="Cancel" name="SaveCancelButton" />
<% End Using %>
答案 0 :(得分:5)
问题是您的模型类名为Comment
,并且您内部有一个字符串属性,也称为Comment
,您尝试绑定到textarea。当粘合剂变得混乱时,这不起作用。使用bind prefix或重命名属性或类,使它们不同。