如何使用ASP.NET MVC为DropDownListFor选择默认值

时间:2017-05-14 04:53:16

标签: asp.net-mvc asp.net-mvc-4 c#-4.0 razor

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

数据库值:

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 - 包含角色列表(主表)

问题:

  • 是否有其他方法可以显示dropdownlist的默认文本?
  • 基于RoleId,我必须在该下拉列表中选择RoleName。

此下拉列表将动态加载。

1 个答案:

答案 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>
}