如何编辑模型的ChildCollection?

时间:2012-03-24 10:40:18

标签: c# .net asp.net-mvc asp.net-mvc-4

我有一个像这样的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并为其创建索引,编辑,创建视图。

e.g。我稍微修改了联系人的索引视图以获取部分视图:

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

}

在部分_ContactView中我有这个:

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

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

我如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

您可以创建专用于处理笔记的新控制器。为它创建URL,如下所示:

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

在新的NotesController中,根据通过网址传递的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类的代码。