问题描述
我是 ASP.NET MVC 的新手,需要您帮助解决特定问题。
我正在处理学校申请。该应用程序能够在数据库中注册学生,校长(管理员)可以将他们分配到组中。
这是控制器的代码
public async Task<IActionResult> GroupInfo(int id,int grade)
{
var groupVM = new Groupviewmodel();
groupVM.Id = id;
groupVM.Grade = grade;
foreach (var stud in await userManager.Users.Where(s => s.ApplicationUserType == ApplicationUserType.Student && s.Status == false).ToListAsync())
{
var studentviewmodel = new StudentInfoviewmodel
{
Id = stud.Id,FirstName = stud.FirstName,LastName = stud.LastName,Email = stud.Email,PrevIoUsGrade = stud.Comments,IsSelected = stud.Status
};
groupVM.Students.Add(studentviewmodel);
}
ViewBag.Students = groupVM.Students.Where(s => s.PrevIoUsGrade == groupVM.Grade.ToString()).Select(s => new SelectListItem()
{
Text = s.FirstName + " " + s.LastName + ",PrevIoUs grade: " + s.PrevIoUsGrade,Value = s.Id
}).ToList();
return View(groupVM);
}
控制器将免费学生分配到小组,但它只显示与小组成绩相匹配的学生。 在我看来,我需要对与小组成绩不符的学生进行验证。
我想检查一下我的观点,这是代码
<form method="post" asp-action="GroupInfo" asp-controller="PrincipalProfile" class="form-horizontal" role="form">
<div class="card">
<div class="card-header">
<h2>Add or remove students to current group</h2>
</div>
<div class="card-body">
<div class="form-group">
<label class="control-label">List of Students</label>
@if (ViewBag.Students != 0)
{
<select asp-for="StudentId" class="form-control" asp-items="ViewBag.Students">
<option selected disabled>Choose a student to add</option>
</select>
}
else
{
<span>There are no available students at this grade.</span>
}
</div>
</div>
<div class="card-footer">
<input type="submit" value="Update" class="btn btn-primary" />
<a asp-controller="PrincipalProfile" asp-action="Groups" class="btn btn-dark">Cancel</a>
</div>
</div>
当我尝试检查 viewbag 是否包含信息时,我收到 RuntimeBinderException。
RuntimeBinderException:运算符 '!=' 不能应用于类型为 'System.Collections.Generic.List
如果您能就如何解决这个问题分享您的愿景和意见,我们将不胜感激。
提前致谢。
解决方法
试试这个
@if ( ViewBag.Students!=null && ViewBag.Students.Count > 0)