繁体   English   中英

从ASP.NET MVC中的子级访问父级模型数据

[英]Access parent model data from child in ASP.NET MVC

我正在使用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并在“父”模型下列出所有子级。 从那里,我想要的是能够在同一个父项下创建新的子级。 要创建新的Child,我需要为新的Child对象提供ParentId。 如何检索该ParentId并将其传递给Child?

我这样做:

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

首先,我检查Model是否不为null。 如果不为null,则从模型中获取FirstOrDefault对象,然后将ParentId传递给Child。 但是,只有在“父母”下已经有孩子的情况下,此方法才有效。 如果在父项下没有子项,则无法读取ParentId,因此会发生错误。 如何从该位置将ParentId发送给Child元素?

我知道这可能是实现目标的错误方法。 但是我还在学习。 另外,我也无法找到答案。 任何帮助表示赞赏。

谢谢

子视图中的Model似乎是IEnumerable<Child> 您有两种选择:

定义一个新的viewmodel,其中包含Child和parentid的列表:

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

使用查看包

ViewBag.ParentId = parentId;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM