0

MVC3「コードファースト」アプリケーションを構築しており、ページにデータを表示するために、次を使用しています:
コントローラーコード:

public ViewResult Index()
{
dynamic assignedT = from t in db.AssignedTasks

join a in db.Approvers on t.ApproverID equals a.ID
 join r in db.Requestors on t.RequestorID equals r.ID
 select new {Approver =a.FirstName + " " +a.LastName,
 Requestor=r.FirstName + " " + r.LastName,
 Title = t.Title,
 t.RequestedDate,
 t.CompletedDate, t.Description,
 Status =(int)t.InternalStatut
  };

 return View(assignedT);
    }

そしてページ上:

@{
   ViewBag.Title = "Index";
 }
<h2>Index</h2>
 <table>
  @foreach (var item in Model) {     
 <tr> 
   <td>@item.GetType().GetProperty("Title").GetValue(item, null)
   </td> 
   </tr> 
   } 
</table>

dynamic を使用することが最善の方法ではないことはわかっています。 強く型付けされたビューを使用して同じ機能を実現するには? ありがとうございました

4

1 に答える 1

1

次のクラスを定義できます。

public class MyViewModel
{
    string Approver { get; set; }
    string Requestor { get; set; }
    string Title { get; set; }
    DateTime RequestedDate { get; set; }
    DateTime CompletedDate { get; set; }
    string Description { get; set; }
    int Status { get; set; }
}

select new次に、Linqクエリをに変更するselect new MyViewModelと、強く型付けされたビューモデル(および)が作成dynamicされvarます。

于 2012-04-04T20:43:32.620 に答える