Сбой флажка MVC 3 при возвращаемом значении модели - PullRequest
2 голосов
/ 08 февраля 2012

У меня есть частичное представление:

@foreach (var checkbox in Model.TimeLimit)
{
    <div class="editor-label">
    @Html.Label(checkbox.Name)
    @Html.Hidden(checkbox.Id) 
    @Html.CheckBoxFor(c=>checkbox.IsChecked)
    </div>
}

У меня есть ParentViewModel, который содержит:

public IEnumerable<URLTimeLimitViewModel> TimeLimit { get; set; }

и URlTimelimitViewmodel содержит:

public string Name { get; set; }
public int Id { get; set; }
public bool IsChecked { get; set; }

Когда я вызываю кнопку отправки, Timelimit в ParentViewModel возвращает ноль, почему?

Ответы [ 2 ]

3 голосов
/ 08 февраля 2012

Лучшим решением является EditorTemplate для URLTimeLimitViewModel

Это будет выглядеть так

@model URlTimelimitViewModel
<div class="editor-label">
    @Html.Label(Model.Name)
    @Html.Hidden(Model.Id) 
    @Html.CheckBoxFor(c=>Model.IsChecked)
</div>

и напишите следующий код вместо «foreach»

@Html.EditorFor(x=> x.TimeLimit)
1 голос
/ 08 февраля 2012

Вам нужно изменить цикл - связыватель модели не может понять, с чем связать публикуемые значения:

@for (var i = 0; i < Model.TimeLimit.Count; i++)
{
  <div class="editor-label">
    @Html.Label(Model.TimeLimit[i].Name)
    @Html.Hidden(Model.TimeLimit[i].Id) 
    @Html.CheckBoxFor(c=>Model.TimeLimit[i].IsChecked)
  </div>
}

Вам также нужно будет объявить свойство TimeLimit как нечто иное, чемТо есть, я бы порекомендовал общий список (метод LINQs ToList очень удобен!):

public List<URlTimelimitViewModel> TimeLimit { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...