Я видел похожие вопросы по этой проблеме, но помощники по тегам крутят мой вопрос.Я хочу, чтобы пользователь мог выбирать между различными уровнями сидений, выбирать несколько мест с этого уровня, и когда они отправляют кучу объектов с подробной информацией о количестве мест, выбранных на каждом уровне (наряду с некоторыми другими деталями, опущеныб / с я еще не добрался) идет к контроллеру, который затем будет выполнять некоторую логику ...
У меня есть моя модель:
public class PerformanceDetailsViewModel
{
public int Id { get; set; }
public string ZoneDescription { get; set; }
public string ShowName { get; set; }
public DateTime ShowDateTime { get; set; }
public string VenueName { get; set; }
public decimal Price { get; set; }
public int NumberOfTickets { get; set; }
public List<SelectListItem> NumberSeatSelect { get; } = new List<SelectListItem>
{
new SelectListItem { Value = "0", Text = "0" },
new SelectListItem { Value = "1", Text = "1" },
new SelectListItem { Value = "2", Text = "2" },
new SelectListItem { Value = "3", Text = "3" },
new SelectListItem { Value = "4", Text = "4" }
};
}
Мой взгляд:
@model List<PerformanceDetailsViewModel>
<h1>@Model.Select(x => x.ShowName).First()</h1>
<h4>@Model.Select(x => x.ShowDateTime).First()</h4>
<h5>@Model.Select(x => x.VenueName).First()</h5>
<hr />
<div class="row">
<div class="col-3">
</div>
<div class="col-3">
Choose Number of Tickets
</div>
</div>
<form asp-controller="PerformanceDetails" asp-action="AddToCart" method="post">
@for (var i = 0; i < Model.Count; i++)
{
<div class="row">
<div class="col-3">
@Model[i].ZoneDescription <br />
@Model[i].Price.ToString("C")
</div>
<select asp-for="@Model[i].NumberOfTickets" asp-items="Model[i].NumberSeatSelect"></select>
</div>
<hr />
}
<button type="submit" class="btn btn-sm btn-primary">Add to cart</button>
</form>
И мой контроллер:
public void AddToCart(PerformanceDetailsViewModel numTickets)
{
var text = numTickets;
}
Вопрос - что я пропустил?Форма отображается нормально и содержит данные.Я видел примеры в разных местах, в которых говорилось, что используется цикл for, а не foreach, поэтому я делаю это, но моя модель все еще наталкивается на пустой провод, хотя я проверил инструменты Chrome Dev и вижу, что форма имеетданные.
Кроме того, я не знаю, использовать ли List<>
для метода контроллера или нет.
Другим недостатком является кусок select asp-for
, потому что он расширяется до множества html, но я не знаю, как это влияет на модель, поскольку каждый из них получает уникальное имя, которое не соответствуетназвание модели ...
Что я делаю не так?И что мне нужно исправить?