如何重新排序MVC 5中的下拉列表?

时间:2014-11-24 11:57:59

标签: asp.net-mvc asp.net-mvc-5

我的MVC 5应用程序中有一个下拉列表,这是一个从1到10的评分等级,但是10只低于1而不是在列表的末尾。所以列表运行1,10,2,3等等。有没有办法纠正这个?我的列表没有硬编码,它是从数据库中填充的。

下面是下拉列表的MVC代码:

@Html.LabelFor(model => model.Rating, "Rating", new { @class = "control-label col-md-4" })

@Html.DropDownList("Rating", String.Empty)
@Html.ValidationMessageFor(model => model.Rating)

1 个答案:

答案 0 :(得分:3)

在转换为下拉列表之前,只需对它们进行排序。

var values = db.Rating.OrderByDescending(o => o.Rate).ToList(); 
var dropdownlist = values.Select(s => new SelectListItem{Value = s.Rate.ToString(), Name = s.Name}).ToList(); 
ViewBag.List = dropdownlist;

//in your view
Html.DropwDownList("Rating", (List<SelectListItem>)ViewBag.List);

如果您的评级存储为字符串,则应在订购前将其强制转换为int。试试这个:

var values = db.Rating.Select(s => new {Rate = Convert.ToInt32(s.Rate}, Id = s.Id).OrderByDescending(o => o.Rate).ToList();