我该怎么做...在视图MVC 5上的Multiples模型

时间:2016-04-11 16:27:29

标签: models asp.net-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 Model

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 个答案:

答案 0 :(得分:1)

据我了解,您希望在一个视图中访问三个不同的模型。这可以通过number of different ways

来实现

我总是创建一个 ViewModel ,其中包含我在视图中需要的每个模型的对象。例如,如果您需要三个模型:ProductOptionOptionsGroup,我会创建一个ViewModel:

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

当您希望访问任何ProductOptionsVM个对象时,您必须记住使用访问器(与常规模型一样)来操作Model对象的每个属性,如下所示:

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 */
}

注意:作为创建任何ViewModel时的一个好习惯,它应该有一个后缀为VM或ViewModel。