【问题标题】:How do I display the name from one sql table linked by an id?如何显示由 id 链接的一个 sql 表中的名称?
【发布时间】:2010-08-23 12:14:08
【问题描述】:

mvc 的新手。我在以下情况下遇到问题:

我有以下看法:

        <tr>
        <% foreach (var game in (IEnumerable<Game>)ViewData["Game"])
           { %>
        <td>
            <input type="checkbox" name="selectedObjects" value="<%=game.Id%>" />
        </td>
        <td>
            <%=game.GMTDateTime%>
        </td>
        <td>
            <%=game.HomeTeamId%>                            
        </td>
        <td>
            <%=game.AwayTeamId%>
        </td>
        <td>
            <%=game.Venue%>
        </td>
        </tr>

除 HomeId 和 AwayId 外,所有数据均显示正常。这两个字段链接到另一个名为 team 的表,HomeTeamId 和 AwayTeamId 中的每个 Id 都与 Team 表中的一条记录相关,并且每个 id 都有一个“名称”。我的问题是如何显示 Team 表中的“名称”而不是显示的 Id 字段。

控制器显示:

   ViewData["Game"] = dc.Games.GetGames();

我在 linq 中使用的查询是:

    public static IEnumerable<Game> GetGames(this Table<Game> source)
    {
        return from c in source
               orderby c.GMTDateTime
               select c;
    }

【问题讨论】:

    标签: sql-server asp.net-mvc linq


    【解决方案1】:

    假设您已经在架构中定义了关系,这应该可以工作:

        <td>
            <%=game.Team.Name%>                            
        </td>
        <td>
            <%=game.Team1.Name%>
        </td>
    

    由于 Team 表有多个 FK,您将看到 Team 的两个属性,TeamTeam1(或类似属性)。您需要通过查看生成的 LINQ 代码或通过反复试验(即观察输出)来确定哪个是哪个。

    通常使用分部类,我会创建额外的属性,以使用更好的名称公开 Team 对象,以明确它们用于哪个 FK。

    【讨论】:

    • 废话!非常感谢那有效。我已经看了好几个小时了。我正在寻找一个复杂的解决方案...
    猜你喜欢
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多