1

次のデータを返すJSON関数があり、それは私が期待したものです:

[{"ShowId":1,"Title":"The Forresters Axe","Date":"\/Date(1339714800000)\/","Time":{"Hours":19,"Minutes":0,"Seconds":0,"Milliseconds":0,"Ticks":684000000000,"Days":0,"TotalDays":0.79166666666666663,"TotalHours":19,"TotalMilliseconds":68400000,"TotalMinutes":1140,"TotalSeconds":68400}}]

しかし、ビュー ページにタイトルを表示しようとすると、問題が発生します。これはビューページのコードです:

<table> @foreach (var showList in Model) {<tr><td>@showList.Title</td></tr>}<.table>

これは私が使用してきた ActionResult ですが、ビューに到達したときに表示するデータを取得できませんでした。上記のように JSON 関数を使用して、正しいデータがあり、そこにないものを呼び出そうとしていないことを再確認しました。

enter/*-------------------------------------------------------
      BOOKING/CHECKAVAIL ACTIONRESULT CALLING CHECKAVAIL VIEW
        Select information from Run table where the id == ShowId

     ------------------------------------------------------*/
    public ActionResult CheckAvail(int id)
    {
        var showList = from r in db.Runs
                       join s in db.Shows on r.ShowId equals s.ShowId
                       where r.ShowId == id
                       select new
                     {
                         ShowId = r.ShowId,
                         Title = s.Title,
                         Date = r.Date,
                         Time = r.Time
                     };
        return View(showList);
    }

私が得るエラーは次のとおりです。

RuntimeBinderException がコードによって処理されませんでした

「オブジェクト」にはタイトルの定義が含まれていません

4

1 に答える 1

0

式を使用して、モデルとしてメソッドに渡すことは基本的にサポートされていない匿名型new { ... }を作成しています。View

いくつかの回避策があります。

しかし、最も簡単な解決策は、データを保持するビューモデルを作成することです。

public class CheckAvailViewModel
{
    public int ShowId { get; set; }
    public string Title { get; set; }
    public DateTime Date { get; set; }
    public DateTime Time { get; set; }
}

そして、クエリからこれを返します:

var showList = from r in db.Runs
                     // ...
                     select new CheckAvailViewModel
                     {
                         ShowId = r.ShowId,
                         Title = s.Title,
                         Date = r.Date,
                         Time = r.Time
                     };
return View(showList.ToArray());
于 2012-04-26T10:48:14.593 に答える