当我使用Virtual Icollection编辑类时,Icollection变为null。 我没有在视图中使用Icollection,所以我尝试使用elementat()隐藏它。
模型
public class Event
{
public Event() { EventId = Guid.NewGuid(); }
public Guid EventId { get; set; }
public string contenu { get; set; }
public virtual ICollection<BookedUser> BookedUsers { get; set; }
}
查看
@model WebApplication2.Models.Event
if (Model.BookedUsers.Count != null)
{
for (int i = 0; i < Model.BookedUsers.Count(); i++)
{
@Html.HiddenFor(m => m.BookedUsers.ElementAt(i).BookedUserId)
}
}
答案 0 :(得分:1)
简单地说,您无法使用ICollection
,因为Razor无法解析对ElementAt(i)
的调用,以便创建正确索引的输入名称。您需要一个列表,因此您可以传递m.BookedUser[i].BookedUserId
。
这是使用视图模型的一个重要原因,因为实体(持久保存到数据库的类)通常与视图需要的内容不一致。创建一个视图模型,如:
public class EventViewModel
{
public string contenu { get; set; }
public List<BookedUser> BookedUsers { get; set; }
}
然后映射到/和Event
。