Как я могу получить список в моем контроллере? - PullRequest
0 голосов
/ 12 декабря 2011

Мой контроллер всегда получает значение «ноль» для параметра «adjModel».
Как я могу получить значения?

КОНТРОЛЛЕР

[HttpPost]
public ActionResult AdjustmentList(List<AdjustmentVM> adjModel)
{
   // adjModel is null
}

ПРОСМОТР

@model List<ExtFramework.ViewModels.BillingArea.AdjustmentVM>

<div class="no-fancybox">
@using (Html.BeginForm("AdjustmentList", "Deposit", new { depositId = ViewBag.depositId }))
{
    <div>
        <table id="adjustment">
            <tr>
                <th>Description</th>
                <th>Montant</th>
            </tr>
            @foreach(var item in Model)
            {
                <tr>
                    <td>@Html.TextBoxFor(model => item.Description)</td>
                    <td>@Html.TextBoxFor(model => item.Amount)</td>
                </tr>
            }
        </table>
        <input type="submit" value="" class="save" />
    </div>
}
</div>

МОДЕЛЬ

namespace ExtFramework.ViewModels.BillingArea
{
    public class AdjustmentVM
    {
        public int AdjustmentId { get; set; }
        public string Description { get; set; }
        public decimal Amount { get; set; }
        public int DepositId { get; set; }
    }
}

Ответы [ 2 ]

0 голосов
/ 12 декабря 2011

Здесь полезны шаблоны редакторов.Вместо использования цикла foreach для просмотра списка моделей представлений используйте @Html.EditorFor(m => m).Затем в подпапку с именем EditorTemplates (соглашение об именовании MVC) добавьте представление с именем AdjustmentVM.cshtml.Опять же, это еще одна конвенция именования MVC - с использованием имени используемого типа.Этот файл будет выглядеть следующим образом:

@model AdjustmentVM

<tr>
    <td>@Html.TextBoxFor(model => model.Description)</td>
    <td>@Html.TextBoxFor(model => model.Amount)</td>
</tr>

Среда выполнения автоматически зацикливает элементы в списке и отображает содержимое шаблона редактора, давая уникальные имена для каждого значения формы, так что механизм связывания модели по умолчанию можетсопоставьте их со свойствами модели представления при обратной передаче.

Вы можете настроить имя шаблона редактора, если хотите, посмотрите класс UIHintAttribute.

0 голосов
/ 12 декабря 2011

По умолчанию, когда вы хотите коллекцию, вы должны убедиться, что имена элементов управления указывают на то, что они взяты из массива и т. Д. Насколько мне известно, средство связывания по умолчанию не имеет этой магии.

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