如何为下拉列表选择默认值用于使用 ASP.NET MVC



我需要根据数据库值显示下拉文本。我找不到解决方案。

数据库值:

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它不能做到这一点。所以使用循环或forEditorTemplates而不是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>
}

最新更新