CheckBox для сброса модели на ноль в Razor - PullRequest
0 голосов
/ 30 января 2019

Я перебираю список, чтобы установить значения для нескольких Html.CheckBoxFor элементов управления, но после отправки формы я получаю нулевое значение для самой модели в параметре контроллера.Например, если я заменим Html.CheckBoxFor на Html.HiddenFor , то будет работать вся привязка модели, и FunctionViewModel будет правильно передано в контроллер.

Модель

public class FunctionViewModel
{
    //... (this class is huge)
    public MeasuringViewModel MeasuringViewModel { get; set; }
}

Классы, используемые моделью

public class MeasuringViewModel
{
   //... (this class is also huge)
   public List<BatchItem> BatchToCancel { get; set; }
}

public class BatchItem
{
    public bool IsCancel { get; set; }
    public VMeasuringService VMeasuringService { get; set; }

    public BatchItem(VMeasuringService vMeasuringService)
    {
        IsCancel = false;
        VMeasuringService = vMeasuringService;
    }
}   

Контроллер

[HttpPost]
public ActionResult CancelBatch(FunctionViewModel viewModel)
{
    // viewModel is null should I use CheckBoxFor

    return View();
}

Форма

@using (Html.BeginForm("CancelBatch", "Services", FormMethod.Post, new { Area = "Functions", @id = "cancelForm" }))
{
    for(int i = 0; i < Model.MeasuringViewModel.BatchToCancel.Count; i++)
    {
        @Html.CheckBoxFor(m => m.MeasuringViewModel.BatchToCancel[i].IsCancel)
    }

    <input type="submit" id="btSubmit" title="Post" alt="Post" value="Post" />
}

Итак, что с ним не так?

1 Ответ

0 голосов
/ 31 января 2019

Вы получаете значение NULL, поскольку ни один из идентификаторов элементов управления не соответствует свойствам вашей модели. Проверьте, проверив ваш HTML-код в браузере, совпадают ли идентификаторы элементов управления, сгенерированные Razor, со свойствами вашей модели?

Во-вторых, в этой ситуациигде вы не можете назначить конкретные идентификаторы своим элементам управления, тогда вы можете получить значение элемента управления в действии вашего контроллера, используя FormCollection, как показано ниже:

[HttpPost]
public ActionResult CancelBatch(FormCollection fc)
{
    // viewModel is null should I use CheckBoxFor

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