在ASP.NET MVC3中为嵌套表单设置选定的值

时间:2012-01-17 08:49:16

标签: asp.net-mvc-3

我有一个拥有一组用户的模型。我循环遍历此集合以生成用户表。表中的一个选项是更改用户角色,该角色是用户对象的枚举属性。目前我有以下代码:

@foreach (var user in Model.Users) 
{ 
    <tr>
        ...
        <td>
            <form action="@Url.Action("UpdateRole", "Admin", new { id = user.Id })" class="inline">
                @Html.DropDownList("Role", Model.GetRoles())
            </form>                    
        </td>
        ...
    </tr>
}

此代码的问题在于生成的下拉列表不知道用户对象上属性的实际值。但是,我看到DropDownList方法没有重载,该方法接受用于所选值的值。 DropDownListFor方法可以,但它似乎直接在模型上运行,我无法找到一种方法来传递嵌套用户对象的类型。可以这样做吗?

2 个答案:

答案 0 :(得分:1)

您可以使用SelectList [1]覆盖所选值,例如:

@Html.DropDownList("Role", new SelectList(Model.GetRoles(), "selectedValueHere"))

答案 1 :(得分:0)

您可以创建自定义DropDownList HtmlHelper扩展方法,其中包含您需要的选项。