使用列表扩展Html.DropDownList

时间:2016-06-07 20:41:59

标签: c# asp.net-mvc asp.net-mvc-4

我想扩展DropDownList以接受任何类型的列表。

我的代码是枚举。我想把它用于任何列表,而不仅仅是枚举。

   public static MvcHtmlString DropDownListFor<TModel, TProperty, TEnum>(
                   this HtmlHelper<TModel> htmlHelper,
                   Expression<Func<TModel, TProperty>> expression,
                   TEnum selectedValue)
        {
            var values = Enum.GetValues(typeof(TEnum)).Cast<TEnum>();
            var items = from value in values
                        select new SelectListItem()
                        {
                            Text = value.ToString(),
                            Value = value.ToString(),
                            Selected = value.Equals(selectedValue)
                        };
            return SelectExtensions.DropDownListFor(htmlHelper, expression, items);
        }

如何重构此代码,以便它可以用于所有类型的列表,如(车辆类型,制作模型,年份..等)

1 个答案:

答案 0 :(得分:0)

我使用以下代码使代码正常工作:

  public static MvcHtmlString DropDownListFor<TModel, TProperty>(
            this HtmlHelper<TModel> htmlHelper,
            Expression<Func<TModel, TProperty>> expression,
            List<dynamic> selectedValue)
        {
                           var items = from value in selectedValue
                        select new SelectListItem()
                        {
                            Text = value.ToString(),
                            Value = value.ToString()
                        };
            return htmlHelper.DropDownListFor(expression, items);
        }