ASP.NET MVC 2.0:简单模型绑定不能正常工作/绑定

时间:2010-03-01 04:36:24

标签: c# .net asp.net asp.net-mvc vb.net

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 %>

1 个答案:

答案 0 :(得分:5)

问题是您的模型类名为Comment,并且您内部有一个字符串属性,也称为Comment,您尝试绑定到textarea。当粘合剂变得混乱时,这不起作用。使用bind prefix或重命名属性或类,使它们不同。