На моей странице бритвы PageModel у меня есть свойство List<T>
:
[BindProperty]
public List<JobCard> CustomerSpecificJobCards { get; set; }
Вот модель JobCard:
public partial class JobCard
{
public int JobCardId { get; set; }
public string Products { get; set; }
public string CusCode { get; set; }
public string Category { get; set; }
public bool IsAssigned { get; set; }
}
Список JobCards заполняется после того, как пользователь публикует номер заказа со страницы:
CustomerSpecificJobCards = AllJobCards.Where(jc => jc.CusCode == WorkOrderInfo.MarkForCusCode).ToList();
Затем он отображается в форме на странице бритвы через цикл foreach
:
@foreach (var card in Model.CustomerSpecificJobCards)
{
<div class="col-1"><input asp-for="@card.IsAssigned" /></div>
<div class="col-9">@card.Products</div>
<div class="col-2">@card.JobCardId</div>
}
Пользователям показывается список рабочих мест и флажок. После проверки пользователь отправляет выбор. Когда я смотрю на публикуемые CustomerSpecificJobCards, список пуст. Зачем? Основываясь на информации здесь Я решил изменить цикл foreach
на цикл for
:
@for (var card = 0; card < Model.CustomerSpecificJobCards.Count; card++)
{
<div class="col-1"><input asp-for="@Model.CustomerSpecificJobCards[card].IsAssigned" /></div>
<div class="col-9">@Model.CustomerSpecificJobCards[card].Products</div>
<div class="col-2">@Model.CustomerSpecificJobCards[card].JobCardId</div>
}
[EDIT] Первоначально я думал, что все значения были возвращены с помощью цикла for
, но оказалось, что возвращаются только значения .IsAssigned
... Products
и JobCardId
пусты. Я использую Razor Pages впервые. Что я делаю не так?
[Followup] Прочитав ответ Рафалона, я нашел это объяснение связывания сложной коллекции с флажками в цикле for или foreach. Плюс еще одна отличная ссылка на привязку данных .