使用 ICollection 编辑对象

本文关键字:对象 编辑 ICollection 使用 | 更新日期: 2023-09-27 18:35:09

当我使用虚拟集合编辑类时,Icollection变为空。我不在视图中使用 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)
    }
}

使用 ICollection 编辑对象

简单地说,你不能使用 ICollection ,因为 Razor 无法解析对ElementAt(i)的调用以创建正确索引的输入名称。您需要一个列表,以便传递m.BookedUser[i].BookedUserId.

这是使用视图模型的一个重要原因,因为实体(持久保存到数据库的类)通常与视图的需求不一致。创建视图模型,如下所示:

public class EventViewModel
{
    public string contenu { get; set; }
    public List<BookedUser> BookedUsers { get; set; }
}

然后映射到/从这里和Event

.