我有一个与寄存器视图紧密绑定的寄存器模型。寄存器模型具有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")
答案 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
放在模型中,这是一个不必要的步骤,但应该有效。虽然模型绑定器不会理解第一个参数,但您需要修复该参数。