ASP.NET MVC 添加排序功能(代码段)
在索引方法中添加排序功能
后台代码
public ActionResult Index(string sortOrder)
{
ViewBag.NameSortParm = string.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";
var students = from s in db.Students
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(students.ToList());
}
这段代码从 URL 中接收 sortOrder 查询字符串,该字符串是由 ASP.NET MVC 作为参数传递给动作方法的。该参数将是”Name”或”Date”之一,这是作为升序的缺省的排序规则。还可能有一条下划线和”desc”来指示这是一个降序排序。
索引页面第一次请求时,没有任何查询字符串被传递,学生们按照 LastName 的升序排序显示。这是 switch 语句中的 default 指定的,当用户点击某列的标题超链接时,相应的 sortOrder 值通过查询字符串传递到控制器中。
两个 ViewBag 变量被用于为视图提供合适的查询字符串值。
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewBag.DateSortParm = sortOrder == "Date" ? "date_desc" : "Date";
前台添加代码:
@Html.ActionLink("Last Name", "Index", new { sortOrder = ViewBag.DateSortParm })
我感觉这个代码应该常用吧,免得忘记!