【问题标题】:MVC3 referencing foreign key during display/edit and ADO.NET Entity Data Model?MVC3 在显示/编辑和 ADO.NET 实体数据模型期间引用外键?
【发布时间】:2012-07-01 05:42:40
【问题描述】:

我是 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 实体数据模型来创建类 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 的值。

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

    就像您分配 ViewBag.OnePageOfProducts 一样,您也可以将团队字典分配给 ViewBag.Teams(这样每个字典项的 Key 是 team_id,Value 是 name),然后在您的视图中执行类似的操作

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

    它将通过 ID 查找团队的名称并呈现它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多