0

我有一個Region類是這樣的:如何在dropdownlistfor上禁用父項?

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與disabled =「disabled」屬性]的可能的重複(http://stackoverflow.com/questions/2655035/creating-a-selectlistitem-with-the-disabled-disabled-attribute) –

回答

0

您可以採取的一種方法是加載區域,刪除父項目,然後將SelectList分配給Viewbag。

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

編輯我以前誤解的問題。你想擁有不可選的標題。我發現this question關於MVC支持OptGroups(我認爲這將完成你要去的)。原來的基礎Html.DropDown幫手不支持它,但你可以寫一個自定義的,並在鏈接的問題有一個自定義助手樣本的情況下。

+1

但是我想要顯示,但要禁用它們 –

+0

啊!我想我更瞭解你的問題,我編輯了一個潛在的解決方案。 –

+1

謝謝,我已經完成了我的問題。我也使用了htmlhelpers。對於這個想法,我接受你的答案。 –