在MVC下拉列表中创建子类别

时间:2016-03-22 19:20:31

标签: asp.net-mvc razor selectlist

我正在尝试在下拉列表中创建分组,如下所示:

  

新媒体
  --Category 1
  --Category 2
  技术员
   - 类别3
  --Category 4

我找到了这个旧的MVC -DropDownList - Categories - SubCategories,但是在此之前它被包含在MVC中。然后我遇到了这个HTML “optgroup” support in DropDownList 。因此,通过这两个链接,我将代码修改为如下所示:

ViewBag.CategoryId = new SelectList(db.Categories.Where(c => c.Status == 1).OrderBy(c => c.CategoryName), "CategoryId", "CategoryName", "RoleId", 3);

问题是它从该表中显示Guid,而不是我需要的RoleDescription字段。我尝试将“RoleId”修改为“Role”,因为这是我的虚拟类在模型中的引用(引用Role类)。如何更改此权限,以便它提取正确的角色名称?

1 个答案:

答案 0 :(得分:1)

dataGroupField既可用作分组字段,也可用作显示内容。由于您传入了RoleId,因此它按此字段进行分组并显示每个组的RoleId。

您需要对其进行更改,以便将RoleDescription字段作为第三个参数传递。

ViewBag.CategoryId = new SelectList(db.Categories.Where(c => c.Status == 1)
    .OrderBy(c => c.CategoryName), "CategoryId", "CategoryName", "Role.RoleDescription ", 3);

根据您当前正在进行的查询,我觉得您需要从db.Categories引用导航属性或进行加入才能获得RoleDescription