Sar*_*roj 5 c# asp.net asp.net-mvc razor asp.net-mvc-4
我需要DropDownListFor
在 MVC 4 中对元素进行分组。
我有几个下拉菜单作为团队和项目。基于团队,我正在获取我有一个表作为项目的项目,其中包含一个名为 entitytype 的列。有 3 种实体类型:客户、作业和项目。
我写了一个查询来获取基于团队的项目。现在我想根据entitytype对项目进行分组。
例如,对于 Team1,有 5 个项目作为 2 个客户、2 个任务和 1 个项目。所以,它应该显示为:
在第一个下拉列表中:
在第二个下拉列表中:
项目:
任务:
项目:
我对此进行了很多搜索,但完全感到困惑,因为我得到了很多结果,因为大多数结果就像框架不支持任何扩展,因此应该编写自定义扩展。
我的要求很简单:我只需将我的查询结果分为三类作为客户,在分配下方和项目旁边。具有实体类型 Client 的那个应该属于那个和其他相应的。
以下是我基于团队获取项目的代码:
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();
}
Run Code Online (Sandbox Code Playgroud)
以下是我用于下拉菜单的剃刀代码:
<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>
Run Code Online (Sandbox Code Playgroud)
所以,这就是我的问题所在。任何帮助将不胜感激。我已经在这方面花了很多时间,但无法产生任何结果。提前致谢。
正如 @EdSF 提到的,目前还没有一个 Html 帮助器允许 dropDownList 的选项组。详细信息: http://www.kashyapas.com/2014/06/09/html-ldquooptgrouprdquo-support-in-dropdownlist-asp-net-mvc-5-2/。
如果您不想下载 RC,您可以随时创建自己的自定义助手来添加对分组下拉列表的支持。示例: http: //weblogs.asp.net/raduenuca/asp-net-mvc-extending-the-dropdownlist-to-show-the-items-grouped-by-a-category
起初,扩展或创建自己的助手似乎令人畏惧,但这是值得花费时间和精力的。如果您可以进行这种类型的自定义,那么它可以为您节省大量的头痛和更复杂的项目的代码。
归档时间: |
|
查看次数: |
6091 次 |
最近记录: |