如何编辑模型的ChildCollection

本文关键字:模型 ChildCollection 编辑 何编辑 | 更新日期: 2023-09-27 18:28:57

我有一个类似的ContactModel:

public class ContactModel
{
    public virtual int ID { get; set; }
    public virtual string LastName { get; set; }
    public virtual ICollection<Note> Notes { get; set; }
}

子集合注释的定义如下:

public class Note
{
    public virtual int ID { get; set; }
    public virtual ContactModel ContactModel { get; set; }     
    public virtual string NotesValue { get; set; }
}

我添加了一个控制器,它采用ContactModel并为其创建索引、编辑、创建视图。

例如,我稍微修改了联系人的索引视图,以采取部分视图:

@foreach (var item in Model) 
{
   @Html.Partial("_ContactView", item)
}

在部分_ContactView中,我有以下内容:

<span class="names"><a href="????">@Model.LastName</a></span>

现在我陷入了困境,我想创建一个EditView for Note类,并从上面的URL指向这个视图。这意味着当用户单击姓氏时,它应该打开Notes的编辑视图,以便为此人添加其他注释。

我该如何做到这一点?

如何编辑模型的ChildCollection

您可以创建一个专门用于处理注释的新控制器。创建URL如下:

<span class="names"><a href="@Html.Action("Edit", "Notes", new { ContactModelId = @Model.ID })">@Model.LastName</a></span>

在新的NotesController中,根据通过URL传递的ContactModel的ID加载您的笔记集:

public class NotesController : Controller {
    public ActionResult Edit(int contactModelId) {
        var result = Repository.ContactModel.Where(x => x.ContactModelId).Select(x => x.Notes);
        return View(result);
    }
}

根据需要添加用于向NotesController类添加/更新注释的代码。