2

ここの ASP.Net チュートリアルに従っていますが、うまくいきました: http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/sorting-filtering-and-paging- 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 }) 

[名前] 列をクリックすると処理されますが、順序は変わりません。何か不足していますか?私のコードは正しいですか?

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 View(students.ToList());

その代わり

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

studensは、クエリを保持している変数であるためです。db.ComputerMaintenanceModels.ToList()を返す場合、順序なしで同じクエリを使用し続けます。

于 2013-03-12T17:48:12.740 に答える
0

クエリを生成し、returnステートメントでそれを無視しています。次のようなものを使用する必要があります。

return View(students);
于 2013-03-12T17:43:02.187 に答える