2

我在这里遵循了 ASP.Net 教程,效果很好:http ://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-与-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 }) 

当我单击 Name 列时,它会处理,但 Order 不会改变。我错过了什么吗?我的代码正确吗?

4

3 回答 3

1

你会想要处理 case 语句的 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());
于 2013-03-12T17:50:47.847 回答
0

您正在生成一个查询,然后在您的 return 语句中忽略它。你应该使用类似的东西:

return View(students);
于 2013-03-12T17:43:02.187 回答
0

你必须返回

return View(students.ToList());

反而

return View(db.ComputerMaintenanceModels.ToList());

因为 studens 是您保存查询的变量。如果您返回 db.ComputerMaintenanceModels.ToList() 您将继续使用相同的查询,没有顺序。

于 2013-03-12T17:48:12.740 回答