2009-06-16 50 views
2

我正在寻找新项目使用asp.net MVC。我在asp.net和web上查看了不同的示例。我仍然没有得到答案,将不同模型的输出合并到一个视图中的最佳方式是什么?例如,我的主页将包含分类,位置和近期帖子的快照。这些将来自三种不同的型号。我是否创建了一个包含所有内容的视图数据,并在视图内进行混淆以相应地放置内容?在asp.net MVC单视图中组合多个输出

回答

0

我通常创建一个视图模型类,在此场景中聚合多个数据模型类。

我相信视图和数据应该是两个不同的对象集合,因为有时您需要在控制器类中执行数据转换(例如,在数据模型类中将货币格式的小数形式转换为视图模型中的货币格式的字符串)被发送到视图。

8

您为您的主页创建一个视图模型......像......

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; 
    } 
} 

,然后你强类型的主页,这个视图模型,你将有机会获得的一切,你在你看来需要=)

+0

感谢乔恩......现在我实际上得到了什么是ViewModel。 – kdmurray 2010-06-03 16:18:09

3

你需要为这个视图模型:

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 %> -->