我有两张桌子日期和歌曲。其中DateId是Song表的外键。
- Date:
DateId
Date
- Song:
SongId
DateId
Title
这是功能:
public ActionResult Index()
{
var song = db.TopSongs;
var model = db.Dates;
var latestDate = model.OrderByDescending(d => d.Date).FirstOrDefault();
return View(latestDate);
}
我需要表明:
视图中的Date SongId Title
。但是返回View只占用一个参数。有没有办法将两个表数据传递给查看?
答案 0 :(得分:2)
有两种选择:
使用ViewBag
ViewBag.song = db.TopSongs;
ViewBag.model = db.Dates
ViewBag.latestDate = model.OrderByDescending(d => d.Date).FirstOrDefault();
创建一个包含所需信息的新类,并返回该类(即view model
)。
请注意 2 是首选选项,因为它可以让您保持强打字(ViewBag
使用动态类型)。
答案 1 :(得分:2)
您需要创建“查看模型”;
public class ViewModel
{
public int SongId { get; set; }
public DateTime Date { get; set; }
public string Title { get; set; }
//More properties that are needed in View
}
然后填充这个;
var viewModel = new List<ViewModel> { //Populate code here };
将此填充的视图模型传递给视图
return (viewModel);
在视图中引用它;
@model IEnumerable<ViewModel>
最后,在View中显示;
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Title)
</td>
</tr>
}
请注意,您的视图模型的实际属性会有所不同,上面的代码只是为了展示您如何实现这一目标。