asp.net mvc将两个表连接到html无序列表中的单个列表项

时间:2015-09-08 11:56:04

标签: asp.net entity-framework join asp.net-mvc-5 entity-framework-6

我已成功使用带有两个表的sql内连接,将两个表连接到一个html无序列表。

我使用的是Asp.net MVC 5 Entityframework 6

我试图在MVC中加入相同的两个表来再次输出单个html无序列表。

第一个表名为team,列号为id,第二个表名为teamgallery,列为teamID。 team.id和teamgallery.teamID的值相等。

在控制器中:

dynamic dmodel = new ExpandoObject();
dmodel.Teamre = (from pd in db.teams
                join od in db.teamgalleries on pd.id equals od.teamID
                where pd.Catresales == "yes"
                select new 
                {
                    pd.id,
                    pd.name,
                    od.picture
                 }).ToList();
return View(dmodel);

在视图中:

<ul>
    @foreach (var teamre in Model.Teamre)
    {
        <li>
            @teamre
        </li>
    }
</ul>

在Web浏览器中,它返回如下列表:

{id = 1,name = John Doe,picture = picture1.jpg}

{id = 2,name = Jane Doe,picture = picture2.jpg}

如果我更改剃刀代码只显示名称:

@teamre.name

我会收到此错误

''应用程序中的服务器错误。 'object'不包含'name'的定义

即使我写

,错误仍然显示
name = pd.name, 

3 个答案:

答案 0 :(得分:0)

var dmodel = new ExpandoObject();
        dmodel.Teamre = (from pd in db.teams
                         join od in db.teamgalleries on pd.id equals od.teamID
                         where pd.Catresales == "yes"
                         select new 
                         {
                           pd.id,
                           pd.name,
                           od.picture
                         }
                         ).ToList();

和Razor

<ul>
    @foreach (var teamre in Model.Teamre)
    {
        <li>
            @teamre.name
        </li>
    }
</ul>

应该这样做

答案 1 :(得分:0)

<ul>
@foreach (var teamre in dmodel.Teamre)
{
    <li>
        @teamre.name
    </li>
}

我认为您使用错误的集合进行迭代...请参阅上面的代码更改。

答案 2 :(得分:0)

谢谢你,为名称和图片添加ViewModel解决了这个问题。

    public string picture { get; set; }
    public string name { get; set; }