Mvc3在紧密绑定的下拉框中添加用户角色

时间:2012-04-04 09:26:38

标签: asp.net-mvc-3

我有一个与寄存器视图紧密绑定的寄存器模型。寄存器模型具有selectlistitem属性。我无法使用选择列表项填充下拉框。

var users = Roles.GetAllRoles();

model.UserRoles = users.Select(m => new SelectListItem()
{Value = m.ToString(),Text = m.ToString()})

@Html.DropDownListFor(r=>r.ToString(),Model.UserRoles,"Select Role")

2 个答案:

答案 0 :(得分:0)

您需要将所选值绑定到模型的属性,如下所示:

(在您的模型中):

public string ActiveRole { get; set; }

...

(在你的视图中):

@Html.DropDownListFor(m => m.ActiveRole, Model.UserRoles,"Select Role")

答案 1 :(得分:0)

DropDownListFor方法的第一个参数是保存列表值的属性。如果列表中的值将是角色的id,则必须具有参数x => x.RoleId,其中x是您的模型,RoleId是模型中的属性。您将下拉列表绑定到viewmodel的字符串表示形式,其结果是垃圾。

第二个参数是IEnumerable<SelectListItem>,它包含列表的选项。此对象具有以下值:Value是发送回服务器的值,这应该是标识角色的值,通常是角色的ID。 Text是列表中显示的文本,它是用户看到的内容。 Selected是一个布尔值,表示列表中的哪个项目被选中。如果在所有SelectListItem中为假,则选择最上面的一个,这是标准的HTML行为。

在您的情况下,您将SelectListItem放在模型中,这是一个不必要的步骤,但应该有效。虽然模型绑定器不会理解第一个参数,但您需要修复该参数。