ASP.NET MVC绑定问题

时间:2010-03-17 10:16:47

标签: asp.net-mvc

我有一个名为“name”的对象。 该对象有一个子对象,它也有一个名为“name”的属性。

Transaction.name

Transaction.TransactionItem

TransactionItem.name

我像往常一样将Transaction对象绑定到部分控件:

Html.TextBox("name", Model.name)%> 

Model是一个Transaction对象。

我绑定TransactionItems:

<%  if (Model.mtTransactionItem != null)
    {
         foreach (var item in Model.mtTransactionItem)
         { %>
    <tr>
        <td>
            <%= Ajax.ActionLink(item.name, "ShowItem", new { id = item.id }, new AjaxOptions { UpdateTargetId = "dialog-form" })%>
        </td>

当我通过ajax调用更新其中一个事务项时,我将整个事务对象传递给局部视图。

当我调试时,检查Model.name属性,它具有正确的值。 但是在页面上显示TransactionItem值的名称,而不是Transaction值的名称。

我做错了什么?

我在MVC 1.0和MVC 2.0框架中检查了这个问题。

1 个答案:

答案 0 :(得分:1)

我的描述不清楚,但我会给你很好的建议。而不是创建这样的字段:

Html.TextBox("name", Model.name)

使用

Html.TextBox("transaction.name", Model.Name)

然后

ActionResult Save(Transaction transaction);

前缀的值必须与函数中的参数相同。

如果您在同一页面上显示项目的组件,请使用

Html.TextBox("transactionitems[i].name", Model.name)

或一项

Html.TextBox("transactionitem.name", Model.name)

不要在页面上为不同的组件使用相同的字段名称,因为它可能会导致ModelState出现问题。阅读有关使用前缀的信息,这样可以节省一些问题。

还要记住,使用MVC 2,您可以使用DataAnnotations,这样可以更轻松地创建表单。