2017-01-20 1 views
-1

私はオンラインストアを構築しており、現在2つのモデルで作業しています。 Shirtモデルは、現在表示されているTシャツ(写真、説明、基本価格、サイズ)に関するすべての詳細を表示します。 Orderモデルは、ユーザーが選択したすべてのアイテムのサイズと数量です。現在、私のためのコントローラのPOSTメソッドでは、私は、ユーザーにシャツのモデルからの情報を表示するには、次があります。1つのモデルを取得して別のモデルに正しく投稿するにはどうすればよいですか?

[AuthLog(Roles="Registered Users, Administrators")] 
public ActionResult Index(int? id, Shirt shirt) 
{ 
    var result = (from s in db.Shirts where s.SiteActive == true select s).ToList(); 
    id = (from s in result select s.Id).First(); 
    var sCount = result.Count(); 
    ViewBag.TabTitle = null; 
    ViewBag.ShirtSizeId = new SelectList(db.ShirtSizes, "Id", "Name"); 
    ViewBag.ShirtQuantityId = new SelectList(db.ShirtQuantities, "Id", "Name"); 
    if (sCount >= 1) 
    { 
     shirt = db.Shirts.Include(s => s.Files).SingleOrDefault(s => s.Id == id); 
     var TabTitle = (from s in result select s.TabName).First(); 
     var TabContent = (from s in result select s.Caption).First(); 
     var TabPrice = (from s in result select s.Price).First(); 
     ViewBag.TabTitle = TabTitle; 
     ViewBag.TabContent = TabContent; 
     ViewBag.TabPrice = TabPrice; 
    } 

    return View(shirt); 
} 

を、ビューで、私はあることを

@model TShirtEmpAdmin.Models.Shirt 

を持っています販売するためのアイテムを表示することができる。しかし、私はまた、ユーザーが選択した情報quantitysizeをordersテーブルに投稿する必要があります。しかし、私は、ビューの2つのモデルを持つことはできませんし、私はこのようなビューモデルにそれらを組み合わせてみました:

public class ShirtOrderViewModel 
{ 
    public virtual<Shirt> Shirts { get; set; } 
    public virtual<Order> Orders { get; set; } 
} 

けど、次のエラー:

は、暗黙的にViewModelに

にタイプのモデルを変換できません。
+1

ビューのモデルをShirtsOrderViewModelに更新し、そのタイプのオブジェクトをアクションから返しましたか? –

+0

シャツ "List "のリストを作成することを意味しましたか、Shirtsの仮想ですか?同じ質問が注文に適用されます。 –

+0

@AliBaigはい、私は、エラーの原因となったのです – Skullomania

答えて

0

viewmodelをあなたの目的に合ったものにするためには、あなたが意図したものを達成する最良の方法があります。

public class OrderViewModel 
{ 
    public Order Order { get; set; } 
    public List<Item> items{ get; set; }   
} 

あなたの項目の1つがShirtである:あなたのビューでモデルを定義して@model TShirtEmpAdmin.Models.OrderViewModelのようなもののようでなければなりません。アイテムにシャツ以上のものがない場合は、public List<Item> items{ get; set; }public List<Shirt> shirts{ get; set; }に変更することができます。注文時間に複数のシャツを注文できる人がいない場合は、public List<Shirt> shirts{ get; set; }public Shirt shirt{ get; set; }に変更することができます。

関連する問題