[英]Add listview items to a list of object in Entity Framework database
[英]Entity Framework displaying a list of items from database to viewmodels into view
我正在使用实体框架,将“角色”的多对多关系传递到控制器中。
在我的控制器中,我设置了:
public ActionResult New()
{
var db = new MyContext();
return View(new UsersNew
{
(from item in db.Roles
select item).Select(role => new RoleCheckbox
{
Id = role.Id,
IsChecked = false,
Name = role.Name
}).ToList()
});
我的Viewmodel包含2个类:
public class RoleCheckbox
{
public int Id { get; set; }
public bool IsChecked { get; set; }
public string Name { get; set; }
}
public class UsersNew
{
public IList<RoleCheckbox> Roles { get; set;}
[Required, MaxLength(128)]
public string Username { get; set; }
[Required, DataType(DataType.Password)]
public string Password { get; set; }
[Required, MaxLength(128), DataType(DataType.EmailAddress)]
public string Email { get; set; }
}
我在ViewModel中的UsersNew类中有一个强类型的视图:
<ul class="list-group">
@for (int i = 0; i < Model.Roles.Count; i++)
{
<li class="list-group-item">
@Html.Hidden("Roles[" + i + "].Id"), Model.Roles[i].Id)
<label for="Roles_@(i)__IsChecked">
@Html.CheckBox("Roles[" + i + "].IsChecked", Model.Roles[i].IsChecked)
@Model.Roles[i].Name
</label>
</li>
}
</ul>
但是,在我的控制器中我有错误说明:
“错误1无法使用集合初始化程序初始化类型'myBlog.Areas.Admin.ViewModels.UsersNew',因为它没有实现'System.Collections.IEnumerable”
我也在控制器中尝试过此操作:
using (var db = new MyContext())
var Roles = MyBlog.Roles.Select(role => new RoleCheckbox
{
Id = role.Id,
IsChecked = false,
Name = role.Name
}).ToList();
return View(new UsersNew { Roles });
我可能做错了,但是如何将角色列表从数据库传递到视图,以便可以在用户创建视图中显示角色“管理员”,“主持人”和“用户”的复选框?
谢谢
语法为:
new ClassName { PropertyName = value }
因此,我们有:
return View(new UserNew {
Roles = (from item in db.Roles
select item).Select(role => new RoleCheckbox {
Id = role.Id,
IsChecked = false,
Name = role.Name
}).ToList()
});
您需要将角色声明为IEnumerable
而不是IList
public IEnumerable<RoleCheckbox> Roles { get; set;}
您不能遍历IList
。 有关实体集合,请参见IList与IEnumerable
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.