我正在研究一个新项目,并决定使用.net core 3.0。我对这个框架是完全陌生的,我被困在任务上,我想通过添加选择列表来更改模板,该选择列表将包含按类别分组的模型数据。
目前,我已经完成了可以通过使用表中的sortOrder参数对每个类别进行排序的教程-来自https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/sort-filter-page?view=aspnetcore-3.0的教程。我想做的是根据表格标题添加单独的下拉列表广告排序记录。
此刻我的观点看起来像
<thead>
<tr>
<th>
<a asp-action="Index" asp-route-sortOrder="@ViewData["NameSortParm"]">@Html.DisplayNameFor(model => model.LastName)</a>
</th>
<th>
@Html.DisplayNameFor(model => model.FirstMidName)
</th>
<th>
<a asp-action="Index" asp-route-sortOrder="@ViewData["DateSortParm"]">@Html.DisplayNameFor(model => model.EnrollmentDate)</a>
</th>
<th></th>
</tr>
</thead>
我的控制器具有以下操作方法...
public async Task<IActionResult> Index(string sortOrder)
{
ViewData["NameSortParm"] = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewData["DateSortParm"] = sortOrder == "Date" ? "date_desc" : "Date";
var students = from s in _context.StudentsModel
select s;
switch (sortOrder)
{
case "name_desc":
students = students.OrderByDescending(s => s.LastName);
break;
case "Date":
students = students.OrderBy(s => s.EnrollmentDate);
break;
case "date_desc":
students = students.OrderByDescending(s => s.EnrollmentDate);
break;
default:
students = students.OrderBy(s => s.LastName);
break;
}
return View(await students.AsNoTracking().ToListAsync());
//return View(await _context.Students.ToListAsync());
}
我浏览了许多网站,但未找到解决方案,因此,如果有人可以帮助我取得理想的结果,我将不胜感激。