2016-05-30 8 views
1

Я использую Html.DropDownListFor() для отображения выпадающего списка с данными из списка. Элементы списка имеют логическое свойство, называемое IsPublic, определяющее, является ли этот элемент общедоступным или нет.Html.DropDownListFor grouping by bool - показать строку вместо значения bool

Вот как я определяю ниспадающее меню:

@Html.DropDownListFor(m => m.SelectedLayout, 
        new SelectList(Model.Layout, "LayoutString", "LayoutName", "IsPublic", 1)) 

Как вы можете видеть, я группирование по свойству IsPublic. Как и следовало ожидать, группировка выполняется следующим образом, со следующим наименованием групп:

enter image description here

Обратите внимание, как группировка делаются на логическом значении (true и false).

Есть ли способ показать эту группировку как пользовательскую строку, хотя все еще группируется по логическому значению? Так что, если IsPublic == true отображает имя группировки как Public и наоборот IsPublic == false отображает имя группировки как Private?

+0

Вы можете сделать это, создав новую 'SelectListGroup' и установив его' name' собственности, (на основе 'значение bool'), а затем создать новый' SelectListItem' и установка 'свойство Group', как описано во второй части [этого ответа] (http://stackoverflow.com/questions/37151572/constructing-a-select-list-with-optgroup-groups/37152663#37152663). Вы не показали модель или какие значения, которые она содержит, так немного сложно дать пример кода –

ответ

2

Вы можете просто использовать свойство get only в своем классе и использовать его для группировки.

public string DisplayPublic { 
    get { return IsPublic ? "Public" : "Private"; } 
} 
+0

Конечно, это решение. Это работает как шарм! Цените помощь! – Detilium