C# MVC4的下拉列表中的Optgroup?
我需要在MVC4中的C# MVC4的下拉列表中的Optgroup?,c#,asp.net,asp.net-mvc,asp.net-mvc-4,razor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Razor,我需要在MVC4中的DropDownListFor中对元素进行分组 我有两个下拉列表作为团队和项目。基于团队,我得到的项目有一个表作为项目,其中包含一个名为entitytype的列。有三种实体类型:客户、任务和项目 我编写了一个查询,以获取基于团队的项目。现在我想根据entitytype对项目进行分组 例如,对于Team1,有5个项目作为2个客户、2个任务和1个项目。因此,它应该显示为: 在第一个下拉列表中: <div class="editor-label"> @
DropDownListFor
中对元素进行分组
我有两个下拉列表作为团队和项目。基于团队,我得到的项目有一个表作为项目,其中包含一个名为entitytype的列。有三种实体类型:客户、任务和项目
我编写了一个查询,以获取基于团队的项目。现在我想根据entitytype对项目进行分组
例如,对于Team1,有5个项目作为2个客户、2个任务和1个项目。因此,它应该显示为:
在第一个下拉列表中:
<div class="editor-label">
@Html.LabelFor(model => model.TeamId,"Team")
</div>
<div class="cssclass">
@Html.DropDownListFor(model => model.TeamId, new SelectList(Model.ddlTeam, "Value", "Text"), "Select Team", new { id = "TeamID", onchange = "GetProjects()", @class = "form-control", UpdateTargetId = "atag" })
@Html.ValidationMessageFor(model => model.TeamId)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.ProjectId, "Project")
</div>
<div class="cssclass">
@Html.DropDownListFor(model => model.ProjectId, new SelectList(Model.ddlProject, "Value", "Text"), "Select Project", new { id = "ProjectID", onchange = "ShowDocsList()", @class = "form-control" })
@Html.ValidationMessageFor(model => model.ProjectId)
</div>
- 组别:组别1
<div class="editor-label">
@Html.LabelFor(model => model.TeamId,"Team")
</div>
<div class="cssclass">
@Html.DropDownListFor(model => model.TeamId, new SelectList(Model.ddlTeam, "Value", "Text"), "Select Team", new { id = "TeamID", onchange = "GetProjects()", @class = "form-control", UpdateTargetId = "atag" })
@Html.ValidationMessageFor(model => model.TeamId)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.ProjectId, "Project")
</div>
<div class="cssclass">
@Html.DropDownListFor(model => model.ProjectId, new SelectList(Model.ddlProject, "Value", "Text"), "Select Project", new { id = "ProjectID", onchange = "ShowDocsList()", @class = "form-control" })
@Html.ValidationMessageFor(model => model.ProjectId)
</div>
- 项目:
- 客户
- 客户1
- 客户2
- 任务:
- 任务1
- 任务2
- 项目:
- 项目1
public List<Project> GetAllProjectForTeam(int teamId)
{
List<Project> project = new List<Project>();
var query = (from p in db.Projects.AsEnumerable()
join pt in db.ProjectTeams.AsEnumerable() on p.ProjectId equals pt.ProjectId
join tm in db.Teams.AsEnumerable() on pt.TeamId equals tm.TeamId
where pt.TeamId == teamId
select p
).ToList();
project = query.Distinct().ToList<Project>();
return project.ToList();
}
公共列表GetAllProjectForTeam(int teamId)
{
列表项目=新列表();
var query=(来自db.Projects.AsEnumerable()中的p)
在p.ProjectId上的db.ProjectTeams.AsEnumerable()中加入pt等于pt.ProjectId
在pt.TeamId上的db.Teams.AsEnumerable()中加入tm等于tm.TeamId
其中pt.TeamId==TeamId
选择p
).ToList();
project=query.Distinct().ToList();
return project.ToList();
}
下面是我的razor下拉代码:
<div class="editor-label">
@Html.LabelFor(model => model.TeamId,"Team")
</div>
<div class="cssclass">
@Html.DropDownListFor(model => model.TeamId, new SelectList(Model.ddlTeam, "Value", "Text"), "Select Team", new { id = "TeamID", onchange = "GetProjects()", @class = "form-control", UpdateTargetId = "atag" })
@Html.ValidationMessageFor(model => model.TeamId)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.ProjectId, "Project")
</div>
<div class="cssclass">
@Html.DropDownListFor(model => model.ProjectId, new SelectList(Model.ddlProject, "Value", "Text"), "Select Project", new { id = "ProjectID", onchange = "ShowDocsList()", @class = "form-control" })
@Html.ValidationMessageFor(model => model.ProjectId)
</div>
@LabelFor(model=>model.TeamId,“团队”)
@Html.DropDownListFor(model=>model.TeamId,新选择列表(model.ddlTeam,“Value”,“Text”),“Select Team”,新{id=“TeamId”,onchange=“GetProjects()”,@class=“form control”,UpdateTargetId=“atag”})
@Html.ValidationMessageFor(model=>model.TeamId)
@LabelFor(model=>model.ProjectId,“项目”)
@Html.DropDownListFor(model=>model.ProjectId,新建选择列表(model.ddlProject,“Value”,“Text”),“Select Project”,新建{id=“ProjectId”,onchange=“ShowDocsList()”,@class=“form control”})
@Html.ValidationMessageFor(model=>model.ProjectId)
所以,这就是我的问题所在。任何帮助都将不胜感激。我已经在这方面花费了很多时间,但没有任何结果。
提前感谢。正如@EdSF所提到的,目前还没有允许dropDownList的选项组的Html帮助程序。详情: 如果您不想下载RC,您可以始终创建自己的自定义帮助程序,以添加对分组下拉列表的支持。例如:
一开始,扩展或创建自己的助手似乎让人望而生畏,但花时间和精力是值得的。如果您可以进行这种类型的定制,它可以为您节省大量的麻烦和更复杂项目的代码。在MVC 4之前,没有添加DataGroupField这样的选项 尽管来自MVC 5,甚至在Asp.net核心中,我们有dataGroupField选项,您可以轻松地将其用于实现 供参考 对于MVC核心应用程序,您可以找到如下SELECLIAT变体
public SelectList(IEnumerable items, string dataValueField, string dataTextField, object selectedValue, string dataGroupField);
另一个建议是使用传统编码生成select元素,然后根据需要使用Multiselect jquery插件
检查此项:-不适用于MVC4
-在MVC5
中,现在有一个dataGroupField。我特别相信MVC 5.2。。嗯