https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-applicationpublic 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());}三元運算符僅根據(jù)條件返回結果之一,它們不會更改 sortOrder 對嗎?如果 sortOrder 是“Date”,那么代碼將設置ViewBag.DateSortParm 為“date_desc”,但 sortOrder 不是仍然是“Date”,所以它實際上不會改變順序?我看不出這段代碼如何正常工作,但確實如此。
1 回答

HUX布斯
TA貢獻1876條經(jīng)驗 獲得超6個贊
1)三元運算符只需設置一個 ViewBag 值,是的。它們不會改變sortOrder
變量的內容。事實上恰恰相反——他們根據(jù).sortOrder
students
2)你是對的,它對實際排序的方式?jīng)]有任何影響,這是由switch
語句確定的。
ViewBag 參數(shù)值設置為與您預期相反的原因是因為在視圖中它們用于構建超鏈接,當單擊這些超鏈接時,將導致數(shù)據(jù)以與現(xiàn)在相反的方式排序。例如,如果當前對“Date”(日期升序)進行排序,那么它將構建一個鏈接,如果單擊該鏈接,則會向服務器傳回一條指令以重新排序并返回數(shù)據(jù),但這次按“date_desc”排序(Date降序)代替。因此,如果您考慮到這些值稍后用于什么,它確實是有道理的。
- 1 回答
- 0 關注
- 133 瀏覽
添加回答
舉報
0/150
提交
取消