我在这里遵循ASP.Net教程,它运行良好:http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application
现在我正在尝试自己,但似乎没有用。我是一般的编程新手,所以请跟我说话,就像我7岁。谢谢!
控制器:
public ViewResult Index(string sortOrder)
{
ViewBag.CurrentSort = sortOrder;
ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "Name desc" : "";
var students = from s in db.ComputerMaintenanceModels
select s;
switch (sortOrder)
{
case "Name desc":
students = students.OrderByDescending(s => s.Name);
break;
}
return View(db.ComputerMaintenanceModels.ToList());
}
查看
@Html.ActionLink("Name", "Index", new { sortOrder=ViewBag.NameSortParm })
当我点击“名称”列时,它会处理,但订单不会更改。我错过了什么吗?我的代码是否正确?
答案 0 :(得分:1)
你想要处理案例陈述的CASE ASC部分:
switch (sortOrder)
{
case "Name desc":
students = students.OrderByDescending(s => s.Name);
break;
case "Name asc":
students = students.OrderBy(s => s.Name);
break;
}
return View(students.ToList());
答案 1 :(得分:0)
您正在生成查询,然后在return语句中忽略它。你应该使用类似的东西:
return View(students);
答案 2 :(得分:0)
你必须返回
return View(students.ToList());
相反
return View(db.ComputerMaintenanceModels.ToList());
因为studens是您持有查询的变量。 如果你返回db.ComputerMaintenanceModels.ToList(),你将继续使用相同的查询,没有订单。