0

是否可以自动对 ASP.net MVC 项目中的所有下拉列表进行排序?

我不想一个一个地去明确地对它们进行排序。有没有办法在项目中的所有下拉列表上自动执行此操作?

4

2 回答 2

1

创建一个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以便您可以在视图中使用它。

于 2012-11-05T23:28:28.807 回答
0

您可以创建 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);

无论哪种方式,您都将更改要对这些列表进行排序的每一行代码。

于 2012-11-06T00:29:39.020 回答