2016-04-11 13 views
1

私はこのビューをしたいと思います。モデルコールがあります。プロダクトオプションがあり、別のテーブルの名前または写真パスを表示する必要がありますどうすればいいですか... MVC 5の倍数モデルMVC 5

enter image description here

public class ProductOption 
    { 
     public int id { get; set; } 
     [Display(Name = "Product")] 
     public int ProductId { get; set; } 
     [Display(Name = "Group")] 
     public int GroupId { get; set; } 
     [Display(Name = "Option")] 
     public int OptionId { get; set; } 
     [Display(Name = "Price")] 
     public decimal priceIncrement { get; set; } 

    } 
    } 

これは、製品のモデルです:

public class Product 
    { 
     public int Id { get; set; } 
     [Display(Name = "Product Name")] 
     public string Name { get; set; } 
     [Display(Name = "Category")] 
     public int CategoryId { get; set; } 
     [Column(TypeName = "Money")] 
     public decimal Price { get; set; } 
     [Display(Name = "Image")] 
     public string PhotoPath { get; set; } 
     [Display(Name = "Discount")] 
     public int DiscountId { get; set; } 
     [Display(Name = "Enable")] 
     public bool status { get; set; } 
     public virtual ICollection<ProductOption> ProductOptions { get; set; } 
    } 

OptionsGroupモデル

public class OptionsGroup 
    { 
     public int OptionsGroupId { get; set; } 
     [Display(Name = "Group Name")] 
     public string OptionsGroupName { get; set; } 
     public virtual ICollection<Option> Options { get; set; } 
    } 

オプションモデル

public class Option 
    { 
     public int OptionId { get; set; } 
     [Display(Name="Option Name ")] 
     public string OptionName { get; set; } 
     [Display(Name = "Group Name ")] 
     public int OptionsGroupId { get; set; } 
     public virtual OptionsGroup OptionsGroup { get; set; } 
    } 

答えて

1

私が理解から、あなたは、単一のビュー内の3つの異なるモデルへのアクセス権を持っていると思います。これはnumber of different waysで可能です。

私はいつも私のビューで必要とする個々のモデルのオブジェクトを含むViewModelを作成しました。あなたは三つのモデルが必要な場合たとえば、:ProductOptionOptionsGroupを、私はそうとのViewModelを作成します。あなたはどのProductOptionsVMオブジェクトにアクセスしたい場合は

public class ProductOptionsVM 
{ 
    public Product product { get; set; } 
    public Option options { get; set; } 
    public OptionsGroup optiongroup { get; set; } 
} 

、あなたは同じように(アクセサを使用することを覚えておく必要があります

public ViewResult setProductDetails(ProductOptionsVM poViewModel) 
{ 
    poViewModel.product.Id = 1; 
    poViewModel.product.Name = "MyProductName"; 
    poViewModel.product.CategoryId = 1; 
    poViewModel.product.Price = 123.45m; 
    poViewModel.product.PhotoPath = "C:\Users\Marimar\Desktop\images\myimage.jpg" 
    poViewModel.product.DiscountId = 1; 
    poViewModel.product.Status = false; 
    poViewModel.product.ProductOptions = _productService.GetAllProductOptions(); 

    return View(obj); /* Your product model will be initialized, 
         whilst the Options and OptionGroup model is null */ 
} 

:あなたは任意のビューモデルを作成するときには良いプラクティスとして、それはVMまたはViewModelにのように接尾辞を持つ必要がありますので、のようなModelオブジェクトの各プロパティを操作するための定期的なモデル)。