![](/img/trans.png)
[英]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.