MVC 3 OrderByDescending无效

时间:2013-03-12 17:40:49

标签: asp.net asp.net-mvc asp.net-mvc-3 entity-framework

我在这里遵循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 }) 

当我点击“名称”列时,它会处理,但订单不会更改。我错过了什么吗?我的代码是否正确?

3 个答案:

答案 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(),你将继续使用相同的查询,没有订单。