簡體   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