ASP.NET MVC 2.0: привязка простой модели не работает / привязка, как следует
У меня есть простое пользовательское имя объекта Comment (сгенерированное linq to sql), оно имеет различные значения, но только два значения отправляются из 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 и скрытого идентификатора с HiddenFor, и я проверил, чтобы убедиться, что имена свойств моего объекта Comment точно (case и all) соответствуют значениям HTML ID / Name элементов FORM, оба являются CommentForPicID и Comment без префиксов.
У меня есть точка останова на моем действии, чтобы увидеть, что происходит. Когда мое действие получает его, объект Comment всегда устанавливается на Ничто во всем действии, и в конечном итоге выдается исключение, когда я пытаюсь использовать нулевое значение. объект.
Я прочитал раздел привязки модели MVC Стивена Сандерсонса, все должно быть в порядке, у кого-нибудь есть идеи?
.
,
.
Дополнительная информация ( чтение не требуется ):
Однако интересно то, что если я оберну объект Comment в родительский объект, скажем, CommentsParent, содержит некоторые вещи и объект Comment в качестве переменных ... тогда я, конечно, изменю идентификаторы элементов формы с соответствующими префиксами, тогда работает как предписано ... но я сделал это только для того, чтобы проверить работоспособность привязки, и не хочу / не нужно делать это для моего приложения.
Вот разметка для тех, кто хочет ее увидеть:
<%@ 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 %>