[英]Passing data from parent window to popup(child) window in ASP.NET MVC 4 View
[英]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.