我有一个名为“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框架中检查了这个问题。
答案 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,这样可以更轻松地创建表单。