首页 > 解决方案 > 如何用foreach编写复选框?

问题描述

我有一个具有 IsChecked 属性的菜单列表。

我写了复选框列表并设置了 asp-for

@foreach (var a in Model.Menus.FindAll(x => x.Pid == item.ID))
                                        {
                                            <div class="form-check">
                                                <input class="form-check-input" type="checkbox" id="checkbox1" asp-for="@a.IsChecked" />
                                                <label for="checkbox1" class="form-check-label">@a.Name</label>
                                            </div>
                                        }

但在 OnPostAsync 函数中,菜单为空。我已经声明了 Menus :public List<Model.Menus>Menus{get;set;} 并且 OnPostAsync 已激活。我该怎么办?

标签: razormodel-view-controller.net-core

解决方案


以下是如何在asp-for您的收藏中使用标签助手:

@{ 
    var index = 0;
    // Required or the index won't match
    Model.Menus = Model.Menus.FindAll(x => x.Pid == item.ID).ToList();
}
@foreach (var a in Model.Menus)
{
    <div class="form-check">
        <input class="form-check-input" type="checkbox" asp-for="@Model.Menus[index].IsChecked" />
        <label asp-for="@Model.Menus[index].IsChecked" class="form-check-label">@a.Name</label>
        <input type="hidden" asp-for="@Model.Menus[index].Id" />
        <input type="hidden" asp-for="@Model.Menus[index].Name" />
    </div>
    index++;
}

推荐阅读