0

我有一个紧密绑定到寄存器视图的寄存器模型。寄存器模型有一个 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")
4

2 回答 2

0

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

(在您的模型中):

public string ActiveRole { get; set; }

...

(在您看来):

@Html.DropDownListFor(m => m.ActiveRole, Model.UserRoles,"Select Role")
于 2012-04-04T09:40:49.610 回答
0

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

第二个参数是一个IEnumerable<SelectListItem>保存列表选项的参数。此对象具有以下值:Value是发送回服务器的值,这应该是标识角色的内容,通常是角色的 id。Text是显示在列表中的文本,它是用户看到的。Selected是一个布尔值,指示选择了列表中的哪个项目。如果在所有SelectListItems 中都为 false,则选择顶部的,这是标准的 HTML 行为。

在您的情况下,您将SelectListItems 放在模型中,这是不必要的步骤,但应该可以。模型绑定器不会理解第一个参数,所以你需要修复那个。

于 2012-04-04T09:53:56.113 回答