0

我有两张表日期和歌曲。其中 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在视图中。但返回视图只采用一个参数。有没有办法将两个表数据都传递给查看?

4

2 回答 2

2

有两种选择:

  1. 使用ViewBag

    ViewBag.song = db.TopSongs;
    ViewBag.model = db.Dates
    ViewBag.latestDate = model.OrderByDescending(d => d.Date).FirstOrDefault();
    
  2. 创建一个包含您需要的信息的新类,并返回它(即 a view model)。

请注意,2是首选选项,因为它允许您保持强类型(ViewBag使用动态类型)。

于 2012-08-24T04:22:41.920 回答
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>
}

请注意,您的视图模型的实际属性会有所不同,上面的代码只是为了展示您如何实现这一点。

于 2012-08-24T04:26:29.380 回答