MVC 5 MultiSelectList 选定值不起作用
MVC 5 MultiSelectList Selected Values Not Working
我在显示可能选项的视图中有一个列表框。但是,用户的角色未显示为已选择。在我的 UserViewModel 中,Roles 集合包含完整的角色列表,而 AspNetRoles 集合仅包含用户所属的角色。我尝试了多个 examples/variations,但没有任何内容显示为选中状态。我卡住了。
视图模型:
public class UserViewModel
{
public string Id { get; set; }
public string Email { get; set; }
public ICollection<AspNetRole> Roles { get; set; }
public virtual ICollection<AspNetRole> AspNetRoles { get; set; }
}
控制器:
public ActionResult Edit(string id)
{
UserViewModel user = new UserViewModel();
AspNetUser aspNetUser = new AspNetUser();
if (!string.IsNullOrEmpty(id))
{
aspNetUser = db.AspNetUsers.Find(id);
user.Id = aspNetUser.Id;
user.Email = aspNetUser.Email;
user.AspNetRoles = aspNetUser.AspNetRoles;
var roles = (from r in db.AspNetRoles
select r).ToList();
user.Roles = roles;
}
return View(user);
}
查看:
@Html.ListBox("AspNetRoles",
new MultiSelectList(Model.Roles, "Id", "Name",
Model.AspNetRoles.Select(m => m.Id)))
您还没有发布您的模型,但 属性 AspNetRoles
似乎是一个复杂对象的集合(您不能绑定到一个复杂对象,只能绑定一个值类型 - 或者在ListBox 的情况,值类型的集合)。您可以通过将 AspNetRoles
更改为 int[]
来处理此问题(假设 Role
的 ID
属性 是 int
)
@Html.ListBoxFor(m => m.AspNetRoles, new SelectList(Model.Roles, "Id", "Name"))
注意,使用强类型助手总是更好。
我在显示可能选项的视图中有一个列表框。但是,用户的角色未显示为已选择。在我的 UserViewModel 中,Roles 集合包含完整的角色列表,而 AspNetRoles 集合仅包含用户所属的角色。我尝试了多个 examples/variations,但没有任何内容显示为选中状态。我卡住了。
视图模型:
public class UserViewModel
{
public string Id { get; set; }
public string Email { get; set; }
public ICollection<AspNetRole> Roles { get; set; }
public virtual ICollection<AspNetRole> AspNetRoles { get; set; }
}
控制器:
public ActionResult Edit(string id)
{
UserViewModel user = new UserViewModel();
AspNetUser aspNetUser = new AspNetUser();
if (!string.IsNullOrEmpty(id))
{
aspNetUser = db.AspNetUsers.Find(id);
user.Id = aspNetUser.Id;
user.Email = aspNetUser.Email;
user.AspNetRoles = aspNetUser.AspNetRoles;
var roles = (from r in db.AspNetRoles
select r).ToList();
user.Roles = roles;
}
return View(user);
}
查看:
@Html.ListBox("AspNetRoles",
new MultiSelectList(Model.Roles, "Id", "Name",
Model.AspNetRoles.Select(m => m.Id)))
您还没有发布您的模型,但 属性 AspNetRoles
似乎是一个复杂对象的集合(您不能绑定到一个复杂对象,只能绑定一个值类型 - 或者在ListBox 的情况,值类型的集合)。您可以通过将 AspNetRoles
更改为 int[]
来处理此问题(假设 Role
的 ID
属性 是 int
)
@Html.ListBoxFor(m => m.AspNetRoles, new SelectList(Model.Roles, "Id", "Name"))
注意,使用强类型助手总是更好。