Я пытаюсь создать страницу заказа, где клиенты могут поставить галочку, если они хотят арендовать товар. Моя ViewModel содержит OrderId и IList статей, которые содержат ArticleId среди других параметров. Я пытаюсь вернуть OrderId и все ArticleId из отмеченных флажков на мой контроллер. OrderId попадает в контроллер без проблем, но IList of Articles всегда возвращает ноль.
Это представление:
@model ViewModelOrder
@{
ViewData["Title"] = "OrderCreateChooseArticles";
}
<h1>Choose products</h1>
<form method="post" asp-controller="Order" asp-action="OrderConfirmation">
<button type="submit" class="btn btn-success">Create order</button>
<input type="text" type="hidden" asp-for="orderid" class="form-control" id="OrderId" readonly="readonly">
<table class="table table-striped" style="margin-top: 20px">
<thead>
<tr>
<th scope="col">Id</th>
<th scope="col">Name</th>
<th scope="col">Description</th>
<th scope="col">Manufacturer</th>
<th scope="col">Publisher</th>
<th scope="col">Rental Days</th>
<th scope="col">Available</th>
<th scope="col">Ckeck</th>
<th scope="col"></th>
</tr>
</thead>
<tbody>
@foreach (var productResult in Model.products)
{
<partial name="ProductPartial" model="productResult" />
}
</tbody>
</table>
<button type="submit" class="btn btn-success">Create order</button>
</form>
И это частичное представление ProductPartial :
@model VivesRental.Repository.Results.ProductResult
<tr>
<td>@Model.Id</td>
<td>@Model.Name</td>
<td>@Model.Description</td>
<td>@Model.Manufacturer</td>
<td>@Model.Publisher</td>
<td>@Model.RentalExpiresAfterDays</td>
<td>
@if (@Model.NumberOfAvailableArticles >= 5)
{
<span class="badge badge-success badge-pill"> @Model.NumberOfAvailableArticles articles available</span>
}
else if (@Model.NumberOfAvailableArticles >= 1 && @Model.NumberOfAvailableArticles <= 4)
{
<span class="badge badge-warning badge-pill"> @Model.NumberOfAvailableArticles articles available</span>
}
else
{
<span class="badge badge-danger badge-pill"> @Model.NumberOfAvailableArticles articles available</span>
}
</td>
<td>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="@Model.Id" id="defaultCheck">
</div>
</td>
</tr>
Этот метод вызывается в контроллере:
public IActionResult OrderConfirmation(ViewModelOrder vm)
{
foreach (var product in vm.products)
{
_orderLineService.Rent(vm.orderid, product.Id);
}
return View();
}
А это ViewModel:
public class ViewModelOrder
{
public Guid orderid { get; set; }
public IList<ProductResult> products { get; set; }
}