Это проект ASP.NET MVC. У меня есть представление, которое отображает коллекцию BookRentViewModel
предметов.
Когда я нажимаю на кнопку в представлении, представление публикуется в метод действия, называемый rent
. У rent
метода действия есть параметр с именем items типа IEnumerable<BookRentViewModel>
.
Вот код вида:
@model IEnumerable<DaramSerl.Models.ViewModels.BookRentViewModel>
@using (Html.BeginForm("rent", "RentBook", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.bookName)
</th>
<th>
@Html.DisplayNameFor(model => model.isRented)
</th>
<th>
@Html.DisplayNameFor(model => model.startDate)
</th>
<th>
@Html.DisplayNameFor(model => model.endDate)
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.EditorFor(modelItem => item.bookName)
</td>
<td>
@Html.EditorFor(modelItem => item.isRented)
</td>
<td>
@Html.EditorFor(modelItem => item.startDate)
</td>
<td>
@Html.EditorFor(modelItem => item.endDate)
</td>
</tr>
}
</table>
<input type="submit" value="Create" class="btn btn-primary" />
}
А вот и метод действия:
[HttpPost]
public async Task<ActionResult> rent(IEnumerable<BookRentViewModel> items)
{
if (ModelState.IsValid)
{
return RedirectToAction("/Index");
}
return View();
}
А вот и BookRentViewModel:
public class BookRentViewModel
{
[Key]
public int bookId{ get; set; }
public string bookName { get; set; }
public bool isRented { get; set; }
public DateTime startDate { get; set; }
public DateTime endDate { get; set; }
}
Проблема в том, что параметр items
всегда равен нулю при запуске действия rent
.
Есть идеи, почему items
равно нулю и не получает коллекцию из вида?
UPDATE
Я использовал fiddler, чтобы увидеть, отправлена ли коллекция на сервер, но кажется, что ее невозможно разобрать в элементах BookRentViewModel.
Update3
Вот скриншот из Fiddler с коллекцией, отправленной из представления:
![enter image description here](https://i.stack.imgur.com/1YAiE.png)