c# - 视图中其他模型的 ASP.NET MVC 显示属性
问题描述
首先对这个蹩脚的命名感到抱歉,但我不知道如何正确地问我的问题。
关键是:我有一个用 C# 编写的 ASP.NET MVC 应用程序,我有两个模型类 -Song
和Genre
.
在Song
模型类中,我有一个GenreId
指向模型类属性Id
的属性Genre
。
在生成的 viev for Song
(用于显示带有艺术家和流派名称的歌曲标题)中,我有以下 HTML 帮助器:
@Html.DisplayFor(modelItem => item.GenreId)
这显然显示的是GenreID
,而不是流派的名称。
但是我该怎么说这个 HTML 助手“显示Genre.Name
与?Genre.Id
item.GenreId
我知道要列出可用的流派列表,我必须添加以下行:
ViewBag.Genres = db.Genres.ToList();
在返回视图的控制器操作中,但如何让它以我描述的方式使用它?
解决方案
在 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)
推荐阅读
- objective-c - 如何在领域中重置数据模型?
- javascript - 如何在输入字段的 php 中延迟搜索功能仅在输入 3 个字符后才开始搜索?
- smarty - foreach from=$results item="entry" name=status
- php - 在 cakephp 3 分页中添加条件
- c# - Enum try parse 方法可以是通用方法吗?
- python - 在我的数据帧上运行 PCA 时,我的计算机蓝屏
- javascript - How can I calculate git tree hash?
- mysql - 在 MySQL 5.7.24 中仅禁用 no_zero_date
- react-native - 运行 React Native 时出现 EADDRINUSE 错误
- ms-access - 从以前的记录中查找数据