簡體   English   中英

如何從模型視圖中搜索父ID?

[英]How to search for parent id in view from model?

我需要在視圖中顯示一些父子關系數據。 以下是我的代碼:

@model PagedList.IPagedList<Test.Domain.TestTable> 
<table width="100%">
    <tr>
        <td>Name</td>
        <td>Parent</td>
    </tr>
    @foreach (var item in Model)
    {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ParentID)
        </td>
    </tr>
    }
    <tr>
        <td>
            Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
            -----------------
            -----------------
        </td>
    </tr>
</table>

現在,我想顯示父名稱而不是父ID,它在數據庫中具有以下結構:
ID 名稱 家長 ID
1 約翰· 諾爾
2 院長 1
3 山姆 1


為了顯示父母的名字,我嘗試了以下代碼,但是這些都不起作用:

  • @Model.Where(screenParent => screenParent.ID == item.ParentID).Select(screenParent => new { screenParent.Name})
    它顯示System.Linq.Enumerable+WhereSelectEnumerableIterator`2[Test.Domain.TestTable,<>f__AnonymousType5`1[System.String]]

您能建議為什么它顯示在代碼行上方嗎?
還可以做些什么來獲得父名稱而不是父ID。
提前致謝。

在這里做幾個假設。

您在模型中是否擁有針對Parent的屬性,或者只是在獲取ParentID? 如果僅輸入ID,建議您更改模型/映射,以便FK輸入整個對象引用。

如果您已經提取了整個Parent對象,請知道實體框架不會自動為您延遲加載Parent。 查詢TestTable時,必須明確告知它要加載它。

您可以通過2種不同的方式執行此操作。

  1. 使您的父級屬性為虛擬。

    公共虛擬TestTable父{ 組; }

    然后,當您嘗試訪問TestTable.Parent時,它將從數據庫中加載。 這將允許您訪問名稱。

  2. 查詢測試表時顯式加載父級,即

    myDBContext.TestTables.Include(“ YourParentPropertyName”)。Where(....);

您視圖中的最終結果將如下所示:

  @foreach (var item in Model)
    {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Parent.Name)
        </td>
    </tr>
    }

讓我知道是否有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM