将表单值绑定到复杂类型

时间:2012-07-16 10:06:24

标签: c# asp.net-mvc model-view-controller asp.net-mvc-2

我现在已经使用了MVC模式一段时间了,但是我已经完全陷入困境了。

我有一个显示复杂对象集合的视图,部分视图如下:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ThreeSixtyScheduling.Areas.Products.Models.PartsOnOrderModel+PartOnOrder>" %>
<tr>
<% using (Html.BeginForm("UpdateStockDueDate", "PartsOnOrder", FormMethod.Post))
   { %>
    <td><input type="hidden" name="CallAppointmentDate" value="<%= Model.CallAppointmentDate %>" /><%= Html.DisplayFor(m => m.CallAppointmentDate)%></td>
    <td><%= Html.HiddenFor(m => m.OrderNumber)%><%= Html.DisplayFor(m => m.OrderNumber)%></td>
    <td><%= Html.HiddenFor(m => m.JobNumber)%><%= Html.DisplayFor(m => m.JobNumber)%></td>
    <td><%= Html.HiddenFor(m => m.Part)%><%= Html.DisplayFor(m => m.Part)%></td>
    <td><%= Html.HiddenFor(m => m.Quantity)%><%= Html.DisplayFor(m => m.Quantity)%></td>
    <td><%= Html.EditorFor(m => m.StockDueDate)%></td>
    <td><button type="submit">Save</button></td>
<% } %>
</tr>

我有一个控制器动作,它将复杂对象作为参数:

public ActionResult UpdateStockDueDate(PartsOnOrderModel.PartOnOrder PartOnOrder)

Form在其集合中确实具有值CallAppointmentDate,因此我理解它应该适当地填充值。

我尝试了多种排列,包括将名称更改为PartOnOrder.CallAppointmentDate,设置ID和名称,将属性添加为单独的参数,但没有任何效果。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

Default Model Binder根据服务器的当前文化执行绑定/验证工作。如果您想根据不同的文化进行日期时间绑定/验证,则必须编写custom model binder