Лучшие практики для выпадающих списков для веб-фреймворка (ASP.NET MVC / ROR / Anything реально) - PullRequest
1 голос
/ 14 февраля 2012

Я пытаюсь выработать лучший метод построения выпадающих списков для значений, которые необходимо привязать к значениям в базе данных.

В настоящее время я собираюсь использовать третий ответ из этого списка Как создать выпадающий список из перечисления в ASP.NET MVC?

Но тогда я подумал, не буду ли я сильно привязываться к Enum, а затем захочу изменить порядок элементов илиЧтобы добавить новые элементы, мне нужно убедиться, что порядок перечисления на самом деле не соответствует значению, хранимому в БД, и должен иметь какой-либо связующий слой.

Есть ли у кого-нибудь определительспособ работы с выпадающими списками, которые относятся к БД?

Ответы [ 3 ]

1 голос
/ 14 февраля 2012

Лично я не использую перечисления в моделях моего представления.Они плохо работают с ASP.NET MVC.Поэтому, если мне нужно отобразить раскрывающийся список в одном из моих представлений, я определяю 2 свойства в соответствующей модели представления:

public class MyViewModel
{
    public string SelectedValue { get; set; }
    public IEnumerable<SelectListItem> Values { get; set; }
}

, которые заполняются в действии моего контроллера из базы данных и представления:

@Html.DropDownListFor(x => x.SelectedValue, Model.Values)
0 голосов
/ 14 февраля 2012

Я фанат использования метода расширения для этой задачи:

public static List<SelectListItem> ToSelectList<T>( this IEnumerable<T> enumerable, Func<T, string> value, Func<T, string> text, string defaultOption)
{
    var items = enumerable.Select(f => new SelectListItem()
                                          {
                                              Text = text(f) ,
                                              Value = value(f)
                                          }).ToList();

    if (!string.IsNullOrEmpty(defaultOption))
    {
                    items.Insert(0, new SelectListItem()
                        {
                            Text = defaultOption,
                            Value = "-1"
                        });
    }

    return items;
}

В вашем контроллере вы выбираете данные, которые вы не хотите представлять как элементы внутри выпадающего меню.Обратите внимание, что в этом примере я выбираю города из базы данных:

    SomeModel.City =
        (from l in _locationRepository.GetAll() select new  { l.Area.AreaDescription })
            .Distinct()
            .ToSelectList(x => x.AreaDescription, x => x.AreaDescription, "All");

И фактический выпадающий список в представлении:

@Html.DropDownList("City", Model.City)
0 голосов
/ 14 февраля 2012

Иметь строго типизированную модель представления для списка с частичным представлением, чтобы соответствовать. Выполните действие в контроллере, которое заполняет модель представления, а затем возвращает его в представление. Везде, где вы хотите использовать раскрывающийся список, вставьте частичное представление в ваше представление.

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