首页 > 解决方案 > 视图中其他模型的 ASP.NET MVC 显示属性

问题描述

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

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

Song模型类中,我有一个GenreId指向模型类属性Id的属性Genre

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

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

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

但是我该怎么说这个 HTML 助手“显示Genre.Name与?Genre.Iditem.GenreId

我知道要列出可用的流派列表,我必须添加以下行:

ViewBag.Genres = db.Genres.ToList();

在返回视图的控制器操作中,但如何让它以我描述的方式使用它?

标签: c#asp.net-mvc

解决方案


在 MVC 中,访问多表的最常见方法是使用 viewmodel。您可以像这样对模型:

    public class SongInfo
    {
        public Song Song {get; set;}
        public Genre Genre {get; set;}
    }

然后使用 linq 进行选择:

    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)

推荐阅读