使用ICollection编辑对象

时间:2016-02-18 13:46:01

标签: c# asp.net-mvc

当我使用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)

    }
}

1 个答案:

答案 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