我该怎么做...视图 MVC 5 上的多个模型
How Can I do this ...Multiples models on view MVC 5
我想做这个视图..我有一个模型调用产品选项,我需要在视图中显示不同表格的名称或照片路径
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; }
}
选项组模型
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; }
}
据我了解,您想在一个视图中访问三个不同的模型。这可以通过 number of different ways.
我总是创建一个 ViewModel,其中包含我在视图中需要的每个模型的对象。例如,如果您需要三个模型:Product
、Option
和 OptionsGroup
,我会这样创建一个 ViewModel:
public class ProductOptionsVM
{
public Product product { get; set; }
public Option options { get; set; }
public OptionsGroup optiongroup { get; set; }
}
当您希望访问任何 ProductOptionsVM
对象时,您必须记住使用访问器(就像您使用常规模型一样)来操作每个 属性 模型对象,如下所示:
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。
我想做这个视图..我有一个模型调用产品选项,我需要在视图中显示不同表格的名称或照片路径
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; }
}
选项组模型
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; }
}
据我了解,您想在一个视图中访问三个不同的模型。这可以通过 number of different ways.
我总是创建一个 ViewModel,其中包含我在视图中需要的每个模型的对象。例如,如果您需要三个模型:Product
、Option
和 OptionsGroup
,我会这样创建一个 ViewModel:
public class ProductOptionsVM
{
public Product product { get; set; }
public Option options { get; set; }
public OptionsGroup optiongroup { get; set; }
}
当您希望访问任何 ProductOptionsVM
对象时,您必须记住使用访问器(就像您使用常规模型一样)来操作每个 属性 模型对象,如下所示:
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。