Проблема привязки ASP.NET MVC - PullRequest
0 голосов
/ 17 марта 2010

У меня есть объект со свойством под названием «имя». Этот объект имеет подобъект, который также имеет свойство с именем "name".

Transaction.name

Transaction.TransactionItem

TransactionItem.name

Я обычно связываю объект транзакции с частичным контролем:

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

Модель является объектом транзакции.

И я связываю 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 framework.

1 Ответ

1 голос
/ 17 марта 2010

Ваше описание мне не понятно, но я дам вам хороший совет. Вместо создания таких полей:

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, которые делают создание форм еще проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...