如何禁用dropdownlistfor上的父项?

时间:2013-08-21 13:34:22

标签: javascript jquery asp.net-mvc twitter-bootstrap html.dropdownlistfor

我有一个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层楼。国家及其子区域 - 城市。我使用bootstrap模板。

我像这个列表一样收集这些区域:

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

中的元素

1 个答案:

答案 0 :(得分:0)

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

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

编辑我之前误解了这个问题。您希望标题不可选。我发现this question关于支持OptGroups的MVC(我认为这将完成你的目标)。结果是基础Html.DropDown帮助器不支持它,但是你可以编写一个自定义的,在链接的问题中有一个自定义帮助器样本。