DropDownListFor所选项目不起作用

时间:2014-08-14 10:01:14

标签: c# asp.net-mvc

我有这个方法从Enum构建DropDownList。 SelectListItems正确显示,但Select属性不起作用。我逐步构建此代码,并且项集合具有正确的选定项目的正确值,但DropDownListFor不返回正确的html。我在SO上找到了这个问题,人们遇到了我的问题:他们在ViewBag中使用相同的名称,并在Mode; l属性中使用,但我有任何ViewBag元素。我究竟做错了什么?

 public static MvcHtmlString EnumDropDownListFor<TModel, TProperty, TEnum>(this HtmlHelper<TModel> htmlHelper,
                                                                                Expression<Func<TModel, TProperty>> expression,
                                                                                TEnum selectedValue, object htmlAttributes)
    {

        IEnumerable<TEnum> values = Enum.GetValues(typeof(TEnum)).Cast<TEnum>();
        List<SelectListItem> items = new List<SelectListItem>();
        foreach (TEnum e in values)
        {
            var type = typeof(TEnum);
            var memInfo = type.GetMember(e.ToString());
            var attributes = memInfo[0].GetCustomAttributes(typeof(DisplayAttribute), false);
            var name = ((DisplayAttribute)attributes[0]).Name;

            int selected = Convert.ToInt32(selectedValue);
            int cur = Convert.ToInt32(e);

            SelectListItem item = new SelectListItem();
            item.Text = name;
            item.Value = Convert.ToInt32(e).ToString();
            item.Selected = cur == selected;

            items.Add(item);
        }

        return SelectExtensions.DropDownListFor(htmlHelper, expression, items, htmlAttributes);
    }

0 个答案:

没有答案