2012-04-04 8 views
0

私は「最初のコード」MVC3を構築し、アプリケーションと、私は次のように使用しています、私のページにデータを表示するようにしています:
コントローラコード:IQueryable in Razorにアクセスするには?

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> 

私はダイナミックを使用するのが最善の方法ではないことを知っています。 強固なビューを使用して同じ機能を実現するにはどうすればよいですか? あなたが

答えて

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 MyViewModelにあなたのLINQクエリでselect newを変更した場合、あなたは強く型付けされたのviewmodel(およびvarからdynamic)を持っています。

+0

List assignedT = ...を使用しようとしましたが、キャスト例外が発生しました。ありがとう – Yuri

+0

@model System.Data.Entity.Infrastructure.DbQuery ありがとうございました。問題を解決しました! – Yuri

関連する問題