C# 如何发布我在复选框中选中或取消选中的选项
我想编辑我在Post控制器中选中或取消选中的复选框。这是我在Get和Cshtml中的代码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
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"/>
}
我得到的很好,我从所有的徽章中得到了我想要的学生徽章,我不知道该怎么做