Ich bin neu in asp.net mvc und Viewmodels sind neu für mich auch. Ich habe eine Ansicht, die Produkte zeigt. In der Ansicht möchte ich alle Produkte in einem div zeigen. dann in einem anderen div möchte ich nur die featuredProducts und in einem anderen div die Toprate zeigen. Ich versuche, verschiedene Viewmodels für jeden zu verwenden, weil ich diese auf einer anderen Seite wieder verwenden werde. Ist das der richtige Weg dies zu tun und wenn nicht was ist? Auch wie kann ich dies mit Viewmodels nur für die Übung tun.Mehrere ViewModels in Ansicht asp.net MVC
Domain Model
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 (Parent)
public class ViewModelProductsMain
{
public ViewModelProducts Products{ get; set; }
public ViewModelTopRated TopRated{ get; set; }
public ViewModelFeatured Featured{ get; set; }
}
Viewmodels (Kinder)
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; }
}
-Controller
public ActionResult Index()
{
//How do I, instantiate and populate the model
var model = new ViewModelProductsMain();
return View(model);
}
Ansicht
@model IEnumerable<myProject.ViewModels.ViewModelProductsMain >
Kein bro alle Modelle enthält gleiche Eigenschaft –
kann ein einziges Modell bringt machen diese Arbeit –
One View-Modell namens 'ProductsViewModel' und dann' ViewModelProductsMain' aber ich vermute, dass du wirklich 'public IEnumerable Products {get; einstellen; } 'da es eine Sammlung ist (und vielleicht auch Featured ist?) –