我希望将asp.net MVC用于新项目。我在asp.net和web上查看了不同的例子。我仍然没有得到答案,将不同模型的输出组合成单个视图的最佳方法是什么。例如,我的主页将包含最近帖子的灾难,位置和快照。这些将来自三种不同的型号。我是否创建了包含其中所有内容的单个viewdata,并在视图中进行了混乱以相应地放置内容?
答案 0 :(得分:8)
您为主页创建了一个ViewModel ......类似于......
public class MyHomepageViewModel
{
public Categories MyCategories { get; set; }
public Locations MyLocations { get; set; }
public Snapshots MySnapshots { get; set; }
public MyHomepageViewModel(Categories categories, Locations locations, Snapshots snapshots)
{
MyCategories = categories;
MyLocations = locations;
MySnapshots = snapshots;
}
}
然后您强烈地将主页键入此视图模型,您将可以访问视图中所需的所有内容=)
答案 1 :(得分:3)
您需要View Model:
public class HomeViewModel {
public IList<Category> Categories;
public IList<Location> Locations;
public IList<Snapshot> Snapshots;
public IList<Post> Recent;
}
您的观点必须是强类型的:
<%@ Page Inherits="System.Web.Mvc.ViewPage<HomeViewModel>" %>
<!-- <% var categories = Model.Categories %> -->
答案 2 :(得分:0)
我通常创建一个视图模型类,在此场景中聚合多个数据模型类。
我认为视图和数据应该是两组不同的对象,因为有时你需要在控制器类中进行数据转换(例如,将数据模型类中的小数形成为视图模型中的货币格式的字符串)。发送到视图。