タプルを4人のメンバーでViewに渡したいと思います。ASP.net MVC - タプルメンバーとして表示するリストを渡す
コントローラー:
PGOrders pGOrder = db.PGOrders.Find(id);
int imgID = pGOrder.imageID;
PGOrderImages pGorderImages = db.PGOrderImages.Find(imgID);
PGAccountDatas account = db.PGAccountDatas.Where(a => a.PGAccountDataID == pGOrder.ordererID).FirstOrDefault();
var offs = db.PGOffers.Where(o => o.orderID == pGOrder.PGOrderID);
return View(Tuple.Create(pGOrder, pGorderImages, account, offs));
ビュー:
@using projectname.Models
@model Tuple<PGOrders, PGOrderImages, PGAccountDatas, IQueryable<PGOffers>>
@foreach (var item in Model.Item4){
<text><p> some item property</p></text>
}
問題は、foreachループに沿ったものです。
Exception Details: System.InvalidCastException: Object must implement IConvertible.
私は IEnumerable<PGOffers>
ためvar offs = db.PGOffers.Where(o => o.orderID == pGOrder.PGOrderID).ToList();
とビューの変更で IQueryable<PGOffers>
に var offs = db.PGOffers.Where(o => o.orderID == pGOrder.PGOrderID);
を変更しようとしましたが、そのdidntのヘルプ。
pGOrder、pGorderImages、accountは指定されたクラスオブジェクトです。
質問は次のとおりです。
タプルのメンバーとしてクラスオブジェクトのリストを渡す方法は?あなたは以下のように、列挙に変換する必要があります
:
、その後はにあなたのモデルを設定します。オフとは何ですか? PGOffersとは何ですか?あなたのモデルで特異項目が複数あるのはなぜですか(単一のPGOffersはPGOfferではなくPGOfferです)。 –
必要な属性を持つビューモデルを作成し、コントローラに入力してビューに渡すことを強くお勧めします。この方法論は、長期的にはるかに維持しやすいでしょう。 – nurdyguy
なぜこのタプルの狂気を避け、必要なすべてのデータを保持するモデルクラスを作成し、それを使って作業しますか?シンプルはいつもより良いですね?ああ、あなたのモデルでIQueryableを避けてください、それはデータではありません。 –