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

在asp.net MVC中在单个视图中组合多个输出,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我正在寻找使用asp.NETMVC的新项目。我在asp.net和web上查看了不同的示例。我仍然没有得到答案,将不同模型的输出组合到一个视图中的最佳方法是什么。例如,我的主页将包含分类、位置、最近帖子的快照。这些将来自三种不同的模型。我是否在视图中创建包含所有内容的单个视图数据,并在视图中创建messup以相应地放置内容?在这种情况下,我通常创建一个视图模型类来聚合多个数据模型类 我认为视图和数据应该是两组不同的对象,因为有时您需要在控制器类中进行数据转换(例如,在视图模型中将数据模型类中的十进

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

在这种情况下,我通常创建一个视图模型类来聚合多个数据模型类


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

您为主页创建了一个视图模型。。。类似于

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

然后将主页强式键入此视图模型,您将可以访问视图中所需的所有内容=)

您需要此视图模型:

public class HomeViewModel {
    public IList<Category> Categories;
    public IList<Location> Locations;
    public IList<Snapshot> Snapshots;
    public IList<Post> Recent;
}
公共类HomeViewModel{
公共图书馆类别;
公共场所;
公共IList快照;
公共图书馆;
}
您的视图必须是强类型的:

<%@ Page Inherits="System.Web.Mvc.ViewPage<HomeViewModel>" %>

<!-- <% var categories = Model.Categories %> -->


谢谢Jon。。。现在我明白了ViewModel是什么了。这是在替换控制器,对吗?如果是,它在asp.net文件夹结构中的位置如何?在一个名为ViewModels的新文件夹中?@George。。。这不会取代控制器,它会被控制器的操作用来填充视图,你可以把它放在文件夹结构的任何地方,我通常会把它们放在ViewModels文件夹中。