MVC orderby on dropdownlist

本文关键字:dropdownlist on orderby MVC | 更新日期: 2023-09-27 18:21:32

我有一个在表中设置的下拉列表。我最初让表的唯一ID来控制项目列表的顺序。然而,工作人员要求更改此订单。我可以使用唯一的标识符重新排列表格,但我相信这个顺序会定期更改,直到他们满意为止。所以我添加了一个名为zoneOrder的字段。我遇到的麻烦是如何使用以下代码订购

ViewBag.zoneId = new SelectList(db.tblZoneLists, "zoneId", "zoneDesc");

我试过

ViewBag.zoneId = new SelectList(db.tblZoneLists, "zoneId", "zoneDesc").OrderByDescending(e=>e.zoneOrder)

但这不起作用,事实上,当我键入e=>e时。intellisense只给我一些选项,比如"value"、"text"

MVC orderby on dropdownlist

您需要重新排序一点:

ViewBag.zoneId = new SelectList(db.tblZoneLists
                                  .OrderByDescending(e=>e.zoneOrder), 
                 "zoneId", "zoneDesc")

SelectList对象是SelectListItem s的列表。每个SelectListItem有3个属性:TextValueSelected。当您在SelectList上调用OrderByDescending时,实际上是在尝试订购SelectListItem s的列表。这就是Intellisense建议使用Value属性的原因。

由于您正在尝试订购DropDownList,因此应首先订购数据源,即tblZoneLists。这就是为什么首先对数据进行排序,然后将其传递给SelectList构造函数。