我需要根据数据库值显示下拉文本。我无法找到解决方案。
数据库值:
RolesID DeptID UserID
2 1 100
5 2 200
查看
@foreach (var gt in Model.RoleList)
{
<tr>
<td>@Html.DropDownListFor(m => m.Role, new SelectList(Model.Role, "RoleId", "RoleName",@gt.RoleId), new { @class = "form-control" })</td>
<td>@Html.DropDownListFor(m => m.Plants, new SelectList(Model.Department, "DeptId", "DeptName", @gt.DeptId), new { @class = "form-control" })</td>
@using (Ajax.BeginForm("deletedet", new AjaxOptions() { UpdateTargetId = "Edit-User", AllowCache = true, InsertionMode = InsertionMode.ReplaceWith }))
{
@Html.Hidden("userId", @gt.UserId)
<td><p data-placement="top" data-toggle="tooltip" title="Delete"><button class="btn btn-danger btn-xs" data-title="Delete" data-toggle="modal" data-target="#myTable"><span class="glyphicon glyphicon-trash"></span></button></p></td>
}
</tr>
}
Model.RoleList - 包含用户角色ID和部门ID列表。
Model.Role - 包含角色列表(主表)
问题:
此下拉列表将动态加载。
答案 0 :(得分:1)
如果foreach
循环@Html.DropDownListFor(m => m.Role, new SelectList(Model.Role, "RoleId", "RoleName",gt.RoleId), new { @class = "form-control" })
从未正常工作,因为在剃刀input/select/textarea
中创建了一个独特的html name
属性。但是使用foreach
它可以&#39;这样做。所以请使用for
循环或EditorTemplates
而不是foreach
。
其他方面,你可以生成HTML,但你不能在你的行动中发送项目清单。
示例:强>
@for(var i = 0;i < Model.RoleList.Count;i++)
{
<tr>
<td>@Html.DropDownListFor(m => Model.RoleList[i].RoleId, new SelectList(Model.Role, "RoleId", "RoleName", Model.RoleList[i].RoleId), new { @class = "form-control" })</td>
</tr>
}