繁体   English   中英

ASP.NET MVC 显示来自其他 model 的视图属性

[英]ASP.NET MVC display property from other model in view

首先对这个蹩脚的命名感到抱歉,但我不知道如何正确地问我的问题。

关键是:我有一个用 C# 编写的 ASP.NET MVC 应用程序,我有两个 model 类 - SongGenre

Song model class 中,我有一个属性GenreId指向该Genre的属性Id model ZA2F21ED4F8EBC26CBB4

在为Song生成的 viev 中(用于显示带有艺术家和流派名称的歌曲标题),我有以下 HTML 助手:

@Html.DisplayFor(modelItem => item.GenreId)

这显然显示了GenreID ,而不是流派的名称。

但是我该怎么说这个 HTML 助手“显示Genre.NameGenre.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM