【发布时间】:2017-02-15 19:23:30
【问题描述】:
我是 asp.net mvc 的新手,视图模型对我来说也是新手。我有一个显示产品的视图。在视图中,我想在一个 div 中显示所有产品。 然后在另一个 div 中,我只想显示 featuresProducts,在另一个 div 中显示 Toprated。我正在尝试为每个视图模型使用不同的视图模型,因为我将在不同的页面上再次使用它们。这是做这件事的正确方法吗?如果不是,那是什么。另外,我怎样才能使用视图模型来完成这个练习。
领域模型
public class Product
{
public int ProductId { get; set; }
public string SKU { get; set; }
public string Name { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public Boolean FeaturedProduct { get; set; }
public Boolean NewProduct { get; set; }
public Boolean TopRated { get; set; }
public Boolean BestSellers { get; set; }
}
ViewModelProductsMain(父)
public class ViewModelProductsMain
{
public ViewModelProducts Products{ get; set; }
public ViewModelTopRated TopRated{ get; set; }
public ViewModelFeatured Featured{ get; set; }
}
ViewModels(子)
public class ViewModelProducts (Child)
//all products
{
public int ProductId { get; set; }
public string SKU { get; set; }
public string Name { get; set; }
public string Title { get; set; }
public string Description { get; set; }
}
public class ViewModelTopRated (Child)
//all products with TopRated true
{
public int ProductId { get; set; }
public string SKU { get; set; }
public string Name { get; set; }
public string Title { get; set; }
public string Description { get; set; }
}
public class ViewModelFeatured (Child)
//all products with Featured true
{
public int ProductId { get; set; }
public string SKU { get; set; }
public string Name { get; set; }
public string Title { get; set; }
public string Description { get; set; }
}
控制器
public ActionResult Index()
{
//How do I, instantiate and populate the model
var model = new ViewModelProductsMain ();
return View(model);
}
查看
@model IEnumerable<myProject.ViewModels.ViewModelProductsMain >
【问题讨论】:
-
没有兄弟你所有的模型都包含相同的属性
-
一个模型就能完成这项工作
-
一个视图模型名为
ProductsViewModel,然后是你的ViewModelProductsMain,但我怀疑你真的想要public IEnumerable<ProductsViewModel> Products { get; set; },因为它是一个集合(也许Featured 也是?) -
除非您需要 Toprated 和特色产品中的不同属性,否则无需定义其他模型。
-
您也可以使用局部视图在单个页面中呈现不同的部分
标签: c# asp.net-mvc