在 MVC 中访问子模型 ASP.NET 父模型数据

本文关键字:模型 ASP NET 数据 MVC 访问 | 更新日期: 2023-09-27 18:31:44

我正在使用 ASP.NET MVC C#构建小型Web应用程序。我有两个模型:

public class Parent
{
    public Guid Id { get; set; }
    public virtual ICollection<Child> Children { get; set; }
}
public class Child
{
    public Guid Id { get; set; }
    public Guid ParentId{ get; set; }
    public virtual Parent Parent { get; set; }
}

我有ParentView,我使用ActionLink将父ID发送到子控制器,如下所示:

@Html.ActionLink("something", "ChildIndexMethod", "ChildController", new { parentId=item.Id}, null)

单击后,我们转到ChildIndexView并列出父模型下的所有子项。从那里,我想要的是能够在同一父级下创建新的子级。要创建新的子对象,我需要为新的子对象提供 ParentId。如何检索该家长 ID 并将其传递给孩子?

我这样做了:

if (Model.FirstOrDefault() != null) 
    { 
        @Html.ActionLink("New child", "NewChild", new { parentId = Model.FirstOrDefault().ParentId})
    }
    else
    {
        //What to do if Model is null?
    }

首先,我检查模型是否不为空。如果它不为 null,我从模型中获取 FirstOrDefault 对象并将 ParentId 传递给 Child。但它仅在父级下已经有子项时才有效。如果父级下没有子项,我无法读取父 ID,因此会发生错误。如何从此位置将 ParentId 发送到子元素?

我知道这可能是实现目标的错误方法。但我仍在学习。另外,我无法找到有关SO的答案。任何帮助,不胜感激。

谢谢

在 MVC 中访问子模型 ASP.NET 父模型数据

似乎儿童视图中的模型是一个IEnumerable<Child>。您有两种选择:

定义一个新的视图模型,其中包含子项和父项 ID 的列表:

public ChildListViewModel
{
    public Guid ParentId {...}
    public IEnumerable <Child> Children {...}
}

使用视图袋

ViewBag.ParentId = parentId;

两者都会使 ParentId 在您的视图中可用,即使您没有任何孩子