在ASP.NET MVC应用程序中使用实体框架进行排序
本文关键字:框架 实体 排序 NET ASP MVC 应用程序 | 更新日期: 2023-09-27 18:29:19
我有一个传递结果的Index操作方法,我想通过相同的Index action方法对我的表进行排序。如何将两个值都传递给视图。这是我的索引操作方法
public ActionResult Index(string sortOrder)
{
var userCount = db.CountUser();
return View(userCount.ToList());
}
这是我的分类码:
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
var teams = from t in db.Teams
select t;
switch (sortOrder)
{
case "name_desc":
teams = teams.OrderByDescending(t => t.TeamName);
break;
default:
teams = teams.OrderBy(t => t.TeamName);
break;
}
您可以通过以下方式实现:
public ActionResult Index(string sortOrder)
{
var userCount = db.CountUser();
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : sortOrder;
var teams = from t in db.Teams
select t;
switch ((string)ViewBag.NameSortParm)
{
case "name_desc":
teams = teams.OrderByDescending(t => t.TeamName);
break;
default:
teams = teams.OrderBy(t => t.TeamName);
break;
}
ViewBag.Teams = teams.ToList();
return View(userCount.ToList());
}
并在视图中使用ViewBag.Teams
。
然而,我认为适当的解决方案是创建一个包含两个集合的适当模型:
public class MyIndexViewModel
{
public List<CountUser> CountUsers { get; set; }
public List<Team> Teams { get; set; }
}
public ActionResult Index(string sortOrder)
{
var userCount = db.CountUser();
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : sortOrder;
var teams = from t in db.Teams
select t;
switch ((string)ViewBag.NameSortParm)
{
case "name_desc":
teams = teams.OrderByDescending(t => t.TeamName);
break;
default:
teams = teams.OrderBy(t => t.TeamName);
break;
}
return View(new MyIndexViewModel { CountUsers = userCount.ToList(), Teams = teams.ToList() });
}
此外,您还需要将视图中的模型类型更改为MyIndexViewModel