我的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)
答案 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();