[英]ASP.NET MVC display property from other model in view
首先对这个蹩脚的命名感到抱歉,但我不知道如何正确地问我的问题。
关键是:我有一个用 C# 编写的 ASP.NET MVC 应用程序,我有两个 model 类 - Song
和Genre
。
在Song
model class 中,我有一个属性GenreId
指向该Genre
的属性Id
model ZA2F21ED4F8EBC26CBB4
在为Song
生成的 viev 中(用于显示带有艺术家和流派名称的歌曲标题),我有以下 HTML 助手:
@Html.DisplayFor(modelItem => item.GenreId)
这显然显示了GenreID
,而不是流派的名称。
但是我该怎么说这个 HTML 助手“显示Genre.Name
与Genre.Id
具有相同的item.GenreId
?
我知道要列出可用的流派列表,我必须添加以下行:
ViewBag.Genres = db.Genres.ToList();
在返回视图的 controller 动作中,但如何让它以我描述的方式使用它?
在 MVC 中,访问多表的最常见方法是使用 viewmodel。您可以对 model 像这样:
public class SongInfo
{
public Song Song {get; set;}
public Genre Genre {get; set;}
}
然后用linq转select:
var view = from s in db.Song
join g in db.Genre on s.GenreId equals g.Id
select new SongInfo
{
Song = s,
Genre =g,
}
在视图中,助手可以是:
@Html.DisplayFor(modelItem => item.Genre.Name)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.