DropDownList не выбирается с помощью HtmlHelper.DropDownListFor - PullRequest
1 голос
/ 02 августа 2010

Я отображаю раскрывающийся список, чтобы позволить пользователю выбрать значение перечисления с помощью этого решения http://blogs.msdn.com/b/ukadc/archive/2010/06/22/asp-net-mvc-creating-a-dropdownlist-helper-for-enums.aspx.

это помощник

public static MvcHtmlString EnumDropDownListFor<TModel, TEnum>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TEnum>> expression, object htmlAttributes)
    {
        ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
        IEnumerable<TEnum> values = Enum.GetValues(typeof(TEnum)).Cast<TEnum>();

        IEnumerable<SelectListItem> items =
            values.Select(value => new SelectListItem
            {
                Text = CultureLocalizationHelper.GetString(value.ToString(), typeof(SiteResources.Core.Views.CulturalConfiguration.Index)),
                Value = value.ToString(),
                Selected = value.Equals(metadata.Model)
            });

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

Этот подход очень хорошо работает с любым перечислениемно не с этим

public enum Color
{

    Orange = 1,

    Green = 2,

    Blue = 3,

    Primary = 4
}

У меня очень странная проблема, помощник не работает с этим перечислением.

Я отлаживаю SelectListItems и есть один, который выбран, но DropDownListFor не отображаетлюбой из элементов с selected = "selected"

Есть идеи?

Спасибо за ваше время!

Ответы [ 2 ]

1 голос
/ 06 октября 2010

укажите новый SelectList(values, selectedValue) вместо указания SelectListItems непосредственно для установки выбранного значения

<%: Html.DropDownListFor(model=> model.Type, new SelectList(Enum.GetValues(typeof(UserType)), (Model??new User()).Type)) %>
1 голос
/ 02 августа 2010

Один из способов - перегрузить Enum ToString() и / или создать свой собственный атрибут, как описано в http://lostinloc.com/2008/05/06/c-overloading-an-enums-tostring/.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...