Как кодировать Дополнительный метод C# для превращения, Модель предметной области возражают в Интерфейсный объект?

Когда у Вас есть объект области, который должен отобразиться, поскольку интерфейсное управление, как выпадающий список, ifwdev предложил создать дополнительный метод для добавления.ToSelectList ().

Инициирующим объектом является Список объектов, которые имеют свойства, идентичные.Text и.Value свойствам выпадающего списка. В основном это - Список объектов SelectList, просто не того же имени класса.

Я предполагаю, что Вы могли использовать отражение для превращения объекта области в интерфейсный объект. У кого-либо есть какие-либо предложения для кода C#, который мог сделать это? SelectList является выпадающим списком MVC SelectListItem.

Идея, конечно, состоит в том, чтобы сделать что-то вроде этого в представлении:

<%= Html.DropDownList("City", 
         (IEnumerable<SelectListItem>) ViewData["Cities"].ToSelectList() )
5
задан Community 23 May 2017 в 11:44
поделиться

2 ответа

Проще сделать SelectList частью вашего объекта ViewModel .

В любом случае, вам просто нужно пройти через IEnumerable , добавить каждый элемент в новый объект SelectList и вернуть его.

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

Как преобразовать эти два похожих метода в один?

4
ответ дан 14 December 2019 в 04:34
поделиться

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

public static IEnumerable<SelectListItem> ToSelectList<T>(this IEnumerable<T> collection, Func<T, string> text, Func<T, string> value)
{
    return collection.ToSelectList(text, value, x => false);
}

public static IEnumerable<SelectListItem> ToSelectList<T>(this IEnumerable<T> collection, Func<T, string> text, Func<T, string> value, Func<T, bool> selected)
{
    return (from item in collection
            select new SelectListItem()
                       {
                           Text = text(item),
                           Value = value(item),
                           Selected = selected(item)
                       });
}

HTHs,
Чарльз

4
ответ дан 14 December 2019 в 04:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: