在asp.net MVC中单个视图中组合多个输出

时间:2009-06-16 21:25:35

标签: asp.net asp.net-mvc

我希望将asp.net MVC用于新项目。我在asp.net和web上查看了不同的例子。我仍然没有得到答案,将不同模型的输出组合成单个视图的最佳方法是什么。例如,我的主页将包含最近帖子的灾难,位置和快照。这些将来自三种不同的型号。我是否创建了包含其中所有内容的单个viewdata,并在视图中进行了混乱以相应地放置内容?

3 个答案:

答案 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)

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

我认为视图和数据应该是两组不同的对象,因为有时你需要在控制器类中进行数据转换(例如,将数据模型类中的小数形成为视图模型中的货币格式的字符串)。发送到视图。