在 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,我需要将 ParentId 提供给新的 Child 对象。如何检索该 ParentId 并将其传递给 Child?
我这样做了:
if (Model.FirstOrDefault() != null)
{
@Html.ActionLink("New child", "NewChild", new { parentId = Model.FirstOrDefault().ParentId})
}
else
{
//What to do if Model is null?
}
首先我检查模型是否不为空。如果它不为空,我从模型中获取 FirstOrDefault 对象并将 ParentId 传递给 Child。但它只有在 Parent 下已经有 Children 的情况下才有效。如果 Parent 下没有 Children,我无法读取 ParentId,因此会发生错误。如何从这个位置将 ParentId 发送到子元素?
我知道这可能是实现我目标的错误方法。但我还在学习。另外,我无法在 SO 上找到答案。感谢任何帮助。
谢谢
子视图中的模型似乎是 IEnumerable<Child>
。您有两个选择:
定义一个包含 Child 列表和 parentid 的新视图模型:
public ChildListViewModel
{
public Guid ParentId {...}
public IEnumerable <Child> Children {...}
}
使用视图包
ViewBag.ParentId = parentId;
两者都会使 ParentId 在您的视图中可用,即使您没有任何 Child
我正在使用 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,我需要将 ParentId 提供给新的 Child 对象。如何检索该 ParentId 并将其传递给 Child?
我这样做了:
if (Model.FirstOrDefault() != null)
{
@Html.ActionLink("New child", "NewChild", new { parentId = Model.FirstOrDefault().ParentId})
}
else
{
//What to do if Model is null?
}
首先我检查模型是否不为空。如果它不为空,我从模型中获取 FirstOrDefault 对象并将 ParentId 传递给 Child。但它只有在 Parent 下已经有 Children 的情况下才有效。如果 Parent 下没有 Children,我无法读取 ParentId,因此会发生错误。如何从这个位置将 ParentId 发送到子元素?
我知道这可能是实现我目标的错误方法。但我还在学习。另外,我无法在 SO 上找到答案。感谢任何帮助。
谢谢
子视图中的模型似乎是 IEnumerable<Child>
。您有两个选择:
定义一个包含 Child 列表和 parentid 的新视图模型:
public ChildListViewModel
{
public Guid ParentId {...}
public IEnumerable <Child> Children {...}
}
使用视图包
ViewBag.ParentId = parentId;
两者都会使 ParentId 在您的视图中可用,即使您没有任何 Child