0

У меня есть Region класс вроде этого:Как отключить родительские элементы в раскрывающемся списке?

public class Region 
{ 
    public int Id { get; set; } 
    public int Name { get; set; } 

    public int ParentId { get; set; } 
} 

И Person имеет область:

public class Person 
{ 
    public int Id { get; set; } 
    public int Name { get; set; } 
    public int SurName { get; set; } 

    public int RegionId { get; set; } 
} 

Но это не нравится узел дерева. Есть только 2 этажа. Страны и его субрегионы - города. Я использую шаблон начальной загрузки.

Я собираю эти регионы как этот список:

Country1 //need to disable this 
    City1 
    City2 
    City3 
Country2 //need to disable this 
    City1 
    City2 

В человека создать действие:

Viewbag.Regions = new SelectList(MyRepository.LoadRegions(), "Id", "Name"); 

И в виду:

@Html.DropDownListFor(model => model.RegionId, ViewBag.Regions as IEnumerable<SelectListItem>, "-", new { data_rel = "chosen", @id = "region" }) 

Наконец, мне нужно, когда открывается выпадающий, чтобы отключить страны, можно выбрать только города.

Как отключить элементы в dropdownlis, которые parentId == 0?

+0

Возможный дубликат [Создание объекта SelectListItem с отключенным атрибутом отключен] (http://stackoverflow.com/questions/2655035/creating-a-selectlistitem-with-the-disabled-disabled-attribute) –

ответ

0

Один из подходов, который вы можете предпринять, - загрузить Регионы, удалить родительские элементы и затем назначить SelectList в Сумку.

var regions = MyRepository.LoadRegions(); 
/* remove parent items from regions */ 
ViewBag.Regions = new SelectList(regions, "Id", "Name"); 

EDIT я уже понял вопрос. Вы хотите иметь заголовки, которые не могут быть выбраны. Я нашел this question о MVC, поддерживающем OptGroups (который, я думаю, выполнит то, что вы собираетесь делать). Оказывается, базовый помощник Html.DropDown не поддерживает его, но вы можете написать пользовательский, и в связанном вопросе есть образец пользовательского помощника для этого случая.

+1

Но Я хочу отображать, но отключить их –

+0

Ah! Думаю, я больше понимаю ваш вопрос, я отредактировал с потенциальным решением. –

+1

Спасибо, я уже сделал свою проблему. Я просто использовал htmlhelpers. Для этой идеи я принимаю ваш ответ. –