C# 如何发布我在复选框中选中或取消选中的选项

C# 如何发布我在复选框中选中或取消选中的选项,c#,asp.net-mvc,razor,model-view-controller,asp.net-mvc-5,C#,Asp.net Mvc,Razor,Model View Controller,Asp.net Mvc 5,我想编辑我在Post控制器中选中或取消选中的复选框。这是我在Get和Cshtml中的代码 var assignedStudentBadges = db.Enrolled_Students_Badges.Where(x => x.CohortSubscriptionId == id); var badges = db.Badges; var studentBadges = new List<StudentBadgesViewModel&g

我想编辑我在Post控制器中选中或取消选中的复选框。这是我在Get和Cshtml中的代码

var assignedStudentBadges = db.Enrolled_Students_Badges.Where(x => x.CohortSubscriptionId == id);
            var badges = db.Badges;
            var studentBadges = new List<StudentBadgesViewModel>();
            foreach (var badge in badges)
            {
                var isChecked = assignedStudentBadges.Any(b => b.ID == badge.ID) ? "checked" : null;
                studentBadges.Add(new StudentBadgesViewModel
                {
                    BadgeId = badge.ID,
                    Name = badge.Label,
                    ImageURL = badge.ImageURL,
                    IsChecked = isChecked
                });
            }
            ViewBag.StudentBadges = studentBadges;
            ViewBag.Badges = new SelectList(assignedStudentBadges, "ID", "Label", cohortSubscriptions.Badges);


<div class="">
                                @{ foreach (var badge in ViewBag.StudentBadges)
                                    {
                                        <div class="col-md-12">
                                            <img src="@badge.ImageURL" width="80" alt="img-fluid" />
                                            @badge.Name
                                            <input type="checkbox" checked="@badge.IsChecked" id="@badge.BadgeId" />

                                        </div>
                                    }
                                }
                            </div>

在输入中,checked不是true或false属性。你需要像这样的东西

@if(@badge.IsChecked)
{
    <input type="checkbox" checked="checked" id="@badge.BadgeId" />
}
else
{
    <input type="checkbox" id="@badge.BadgeId" />
}

现在。这是一个简单的例子,有更好的方法,比如内联if或@Html.Checkbox

如果您想返回在post中是否选中了框,您可以将asp添加到您的输入中。然后您应该可以访问列表项以及post方法中的任何更改。如果尚未添加[BindProperty]注释,请不要忘记在模型的ViewBag属性中添加[BindProperty]注释

    @for (var i = 0; i < Model.ViewBag.StudentBadges.Count; i++)
    {
        <img src="@Model.ViewBag.StudentBadges[i].ImageURL" width="80" alt="img-fluid" />
        @Model.ViewBag.StudentBadges[i].Name
        <input id="@Model.ViewBag.StudentBadges[i].BadgeId" type="checkbox" checked="@Model.ViewBag.StudentBadges[i].IsChecked" asp-for="@Model.ViewBag.StudentBadges[i].IsChecked"/>
    }

我得到的很好,我从所有的徽章中得到了我想要的学生徽章,我不知道该怎么做