我有一个学生名单,其位置分数可以排序或过滤。我注意到(在视觉上)过滤分数时,分数不会随其各自的学生而动,而是静态的。
例-
过滤前:
Student A |11
Student AA |10
Student B |09
Student BB |08
经过“ B”级学生过滤后:
Student B |11
Student BB |10
我假设是因为他们的错误或丢失的逻辑告诉代码学生人数已更改。但是我不确定我需要在代码中添加什么来解决此问题,并希望这里的人能够为我指明正确的方向。
剃刀代码:
@for (int i = 0; i < Model.Students.Count; i++)
{
<tr>
<td>@Model.Students[i].LastName</td>
<td>@Model.Students[i].FirstName</td>
<td>
@* Ept score form group*@
<div class="form-group">
<input type="hidden" asp-for="@Model.Students[i].Sid" />
<label asp-for="@Model.Students[i].Score.EptScore">Score</label>
<input type="number" data-internalid="@i" asp-for="@Model.Students[i].Score.EptScore" class="form-control limited-width" aria-describedby="helpBlock1" />
<span id="helpBlock1" asp-validation-for="@Model.Students[i].Score.EptScore" class="help-block"></span>
</div>
</td>
</tr>
逻辑代码:
IQueryable<Student> StudentsIQ = (from s in _context.Students
where s.StuType == StudentType.New
&& s.YearQuarterEnrolled == quar.Id
orderby s.LastName, s.FirstName //default ordering
select s).Include(st => st.Score);
// Based on input search filters, filter student data
if (!String.IsNullOrEmpty(LnameSearch))
{
StudentsIQ = StudentsIQ.Where(s => s.LastName.ToLower().StartsWith(LnameSearch.ToLower()));
queryParams.Add("LnameSearch", LnameSearch);
}
if (!String.IsNullOrEmpty(SidSearch))
{
StudentsIQ = StudentsIQ.Where(s => s.Sid.StartsWith(SidSearch));
queryParams.Add("SidSearch", SidSearch);
}
if (!String.IsNullOrEmpty(FnameSearch))
{
StudentsIQ = StudentsIQ.Where(s => s.FirstName.ToLower().StartsWith(FnameSearch.ToLower()));
queryParams.Add("FnameSearch", FnameSearch);
}
...
您的模型状态是陈旧的,因此您将需要ModelState.Clear()
在异步调用数据库之前使用它来清除它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句