我已成功使用带有两个表的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,
答案 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; }