是否可以自动对 ASP.net MVC 项目中的所有下拉列表进行排序?
我不想一个一个地去明确地对它们进行排序。有没有办法在项目中的所有下拉列表上自动执行此操作?
创建一个HtmlHelperExtensions
具有扩展方法的类,该方法可以满足您的需求。像这样的东西:
public static class HtmlHelperExtensions
{
public static MvcHtmlString SortedDropDownList(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList)
{
return htmlHelper.DropDownList(name, selectList.OrderBy(x => x.Text));
}
}
无论您将帮助程序放在哪个名称空间中,请确保将其添加到文件夹configuration\system.web.webPages.razor\pages\namespaces
中的 web.config 中,\Views
以便您可以在视图中使用它。
您可以创建 HtmlHelperExtension 类作为 friism sugested,或者您可以像这样在 SelectList 上创建扩展方法:
public static class SortedList
{
public static void SortList(this SelectList selectList, SortDirection direction)
{
//sort content of selectList
}
}
然后像这样使用它:
var sel = new SelectList(new List<string> {"john", "mary", "peter"});
sel.SortList(SortDirection.Ascending);
无论哪种方式,您都将更改要对这些列表进行排序的每一行代码。