0

私はMVCプログラミングに不慣れで、現在アプリケーションを開発しています。私は次の問題を抱えていますが、解決方法のアイデアが不足しています(ここでいくつかの同様のトピックを読んだことがありますが)。ビューに外部キー列の別の値を表示したい(FK値の代わりに、関連するテーブルから列値を取得する)。これを実現する方法がわかりません(linqステートメントを使用したモデルを使用して、コントローラーでビューモデルを作成しますか?)。ASP.NETに関する私の知識は非常に短いので、それを作成する方法についてより詳細な回答をいただければ幸いです。前もって感謝します !ケースについては、以下を確認してください。

データベースに次のテーブルがあります。

CREATE TABLE [dbo].[TBL_MANAGER](
[manager_id] [int] IDENTITY(1,1) NOT NULL,
[first_name] [varchar](50) NULL,
[last_name] [varchar](50) NOT NULL,
[team_id] [int] NOT NULL,

CREATE TABLE [dbo].[TBL_TEAM](
[team_id] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](50) NOT NULL,

ADO.NET EntitiyDataModelを使用してクラスTBL_MANAGERを作成します。モデルクラスには、次のメソッドがあります(おそらく、IListを返す必要があります)。

public partial class TBL_MANAGER
{
    public static IQueryable<TBL_MANAGER> GetManagersQuery()
    {
        FBMSEntities db = SingletonDB.getDB();
        var queryManager = from manager in db.TBL_MANAGER
                           orderby manager.manager_id
                           select manager;
        return queryManager;
    }
}

これは、コントローラーからのコードです(NuGet PagedListを使用)。

    public ActionResult Index(int? page)
    {
        var managers = TBL_MANAGER.GetManagersQuery();
        var pageNumber = page ?? 1;
        var onePageOfProducts = managers.ToPagedList(pageNumber, @FBMS.Common.Constants.MAX_PER_PAGE);
        ViewBag.OnePageOfProducts = onePageOfProducts;

        return View(managers);
    }

そして、これは私がデータを視覚化するビューの部分です:

@foreach (var item in ViewBag.OnePageOfProducts)
{
<tr>
    <td>
        @item.team_id
    </td>
    <td>
        @item.first_name
    </td>
    <td>
        @item.last_name
    </td>
    <td>
        @item.manager_status
    </td>
    <td>
        @Html.ActionLink("Edit", "Edit", new { id=item.manager_id }) |
        @Html.ActionLink("Details", "Details", new { id=item.manager_id }) |
        @Html.ActionLink("Delete", "Delete", new { id=item.manager_id })
    </td>
</tr>
}

team_idの代わりにTBL_TEAM.nameの値を表示したいと思います。

4

1 に答える 1

0

ViewBag.OnePageOfProductsを割り当てるのと同じように、チームのディクショナリをViewBag.Teamsに割り当てて(各ディクショナリアイテムのキーがteam_idで、値がnameになるように)、ビューで次のようにすることもできます。

...

<td>
    @ViewBag.Teams[item.team_id]
</td>

....

IDでチームの名前を検索し、レンダリングします。

于 2012-06-30T21:42:40.857 に答える