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" })

最后,当下拉菜单打开时,我需要禁用国家,可以只选择城市。

如何禁用下拉列表中的元素parentId == 0

4

1 回答 1

0

您可以采取的一种方法是加载区域,删除父项,然后将 SelectList 分配给 Viewbag。

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

编辑我以前误解了这个问题。您希望拥有不可选择的标题。我发现了这个关于 MVC 支持OptGroups的问题(我认为这将完成你的目标)。结果发现基本 Html.DropDown 助手不支持它,但您可以编写自定义助手,并且在链接的问题中有一个用于这种情况的自定义助手示例。

于 2013-08-21T15:38:55.373 回答