0

Date と Song の 2 つのテーブルがあります。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ビューで。しかし、戻りビューは 1 つのパラメーターしか取りません。両方のテーブル データをビューに渡す方法はありますか?

4

2 に答える 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 };

そして、このデータが取り込まれた View Model を View に渡します

return (viewModel);

ビュー自体で this への参照を作成します。

@model IEnumerable<ViewModel>

最後に、View に表示します。

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Title)
        </td>
    </tr>
}

ビュー モデルの実際のプロパティは異なることに注意してください。上記のコードは、これを実現する方法を示すためのものです。

于 2012-08-24T04:26:29.380 に答える