C# 在MVC中按字母顺序排列选择列表

C# 在MVC中按字母顺序排列选择列表,c#,jquery,asp.net-mvc,visual-studio-2010,asp.net-mvc-2,C#,Jquery,Asp.net Mvc,Visual Studio 2010,Asp.net Mvc 2,问题是我的选择列表中可能有我想退出的数据(加上它的格式类似于[Ford IV 200 xyx])(通过在第三列中只显示有一点true值的记录,这也是我需要弄清楚如何做的事情),最大的问题是,如果用户加上另一辆福特车,它现在会一直显示在下拉列表的底部,它看起来会非常混乱,甚至会被忽略,所以有什么想法吗 p、 美国在标签中添加了jquery,以防这是一个可能的解决方案,因为我可以在这个项目中使用它 编辑-对于第三列位值过滤器,这里是您可以使用OrderBy扩展方法: <%: Html.Drop

问题是我的选择列表中可能有我想退出的数据(加上它的格式类似于[Ford IV 200 xyx])(通过在第三列中只显示有一点true值的记录,这也是我需要弄清楚如何做的事情),最大的问题是,如果用户加上另一辆福特车,它现在会一直显示在下拉列表的底部,它看起来会非常混乱,甚至会被忽略,所以有什么想法吗

p、 美国在标签中添加了jquery,以防这是一个可能的解决方案,因为我可以在这个项目中使用它


编辑-对于第三列位值过滤器,这里是您可以使用
OrderBy
扩展方法:

<%: Html.DropDownListFor(
    x => x.ModelId, 
    new SelectList(Model.VehicleModels.OrderBy(x => x.Name), "Id", "Name"), 
    "-- Select a model --"
) %>
x.ModelId,
新的选择列表(Model.VehicleModels.OrderBy(x=>x.Name),“Id”,“Name”),
“--选择一个模型--”
) %>

多亏了Darin,我才想出了他的稍加修改的解决方案,这让我在VM中解决了这个问题,就像这样

List<Reason> reasonList = _db.Reasons.OrderBy(m=>m.Description).ToList();
        ReasonList = new SelectList(reasonList, "Id", "Description");
List reasonList=_db.Reasons.OrderBy(m=>m.Description.ToList();
推理列表=新的选择列表(推理列表,“Id”,“描述”);
List TestList=new List();
foreach(//SomeCode)
{
TestList.Add(//项);
}
TestList=TestList.OrderBy(n=>n.TestItem.ToList();

如果您的dropdownlist有一个编辑器模板,这将根据文本对其进行排序。

selectList.OrderBy(x=>x.Text)

小问题,我认为您使用LinqToSql时,我使用edmx时,x.ModelId对我来说是x。(我也存储的表名)。(实际记录值的表列名)这样做或混合使用(x=>x.name)仍然有问题,因为它只有x。(等于/GetHashCode/GetType/Selected/Text/ToString/Value)并且由于我测试它的表只有2列(Id和描述),我假设它是为了匹配在本例描述中要排序的列名,以防我尝试了x.Text、x.Value和x.Selected……所有结果都是“数据绑定:'System.Web.Mvc.SelectListItem'不包含名为'Id'的属性。”这是一个错误。我找到了另一种方法,在我的viewmodel中,我将选择列表设置为如此(公共SelectList[分配随机名称,例如ModelList]{get;set;}list[插入随机名称,例如modList]=db)。[Multilated inserted table name刚刚使用过,如果它在现在的模型之前是模型的话也是如此].OrderBy(x=>x.Description).ToList();ModelList=new SelectList(modList,“Id”“Description”);这是否会改变您回答问题的方式我不知道,但如果您修复了之前评论的错误或添加了详细信息……关于此评论,我会将您的答案标记为正确。我猜您没有时间检查您的旧答案,所以我会在发布答案并将其设置为正确之前的另一天将此保留T
List<string> TestList = new List<string>();

foreach(//SomeCode)
{

TestList.Add(//Item);

}

TestList = TestList.OrderBy(n => n.TestItem).ToList();