我需要根据数据库值显示下拉文本。我找不到解决方案。
数据库值:
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 的列表。
模型.角色- 包含角色列表(主表)
问题:
- 有没有其他方法可以显示下拉列表的默认文本?
- 根据角色 ID,我必须在该下拉列表中选择角色名称。
此下拉列表将动态加载。
如果循环@Html.DropDownListFor(m => m.Role, new SelectList(Model.Role, "RoleId", "RoleName",gt.RoleId), new { @class = "form-control" })
foreach
永远无法正常工作,因为在 razor 中input/select/textarea
创建一个唯一的 htmlname
属性。但是使用foreach
它不能做到这一点。所以使用循环或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>
}