Форма POST со списком объектов в виде свойства viewModel (без ajax) - PullRequest
0 голосов
/ 30 августа 2018

У меня есть модель представления, которая отображается в виде cshtml следующим образом:

@model MyViewModel
<form action="...">
  @foreach (var item in this.Model.MyList)
  {
    <input type="checkbox" name="item.Name"/>
  }
</form>

Тогда у меня есть метод контроллера на бэкэнде:

[HttpPost]
public ActionResult SaveMyViewModel(MyViewModel viewModel)
{
...

Когда я проверяю viewModel в методе контроллера во время POSTing, он имеет все нулевые свойства. Я ожидаю, что он будет иметь значения в MyList и там, bools для каждого элемента в MyList.

Возможно ли это без Ajax? Я не могу использовать AJAX здесь.

Что необходимо сделать с формой для правильного возврата точного представления модели представления обратно на сервер?

1 Ответ

0 голосов
/ 30 августа 2018

Я предполагаю, что ваша button для отправки form находится в пределах <form> element в HTML.

Когда вы размещаете List (Array) из Object с HTML до Controller, вам необходимо добавить индекс каждого элемента в List к HTML name property.

Кроме того, name property также должен иметь то же имя, что и Property в коде C#.

Ваш код должен выглядеть ниже, чтобы работать правильно.

<form action="...">
   @{ 
var i = 0; 
}
  @foreach (var item in this.Model.MyList)
  { var nameChecked = string.Empty; 
 if(item.Name != null) nameChecked = “checked”;
<input type="checkbox" name="viewModel[i].Name" @nameChecked  />
i++;
  }
</form>

ПРИМЕЧАНИЕ. Это базовый пример кода. Вы всегда можете улучшить работу более эффективно.

Надеюсь, это поможет!

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