是否可以将大量数据从控制器传递到MVC3中的viewmodel进行查看?

Ton*_*nyG 6 model-view-controller asp.net-mvc asp.net-mvc-3

每次调用新页面时,我都有代码通过viewmodel将近1MB的数据从我的控制器传递到视图.我可以稍微优化一下,但我想知道这是否值得做,因为数据流都是内部的.

我在控制器中执行的典型操作是从Azure数据存储区获取所有测试结果,然后将它们放入类的新实例中.然后我将这个班级和其他人传递到视图上.我想我不确定.数据是通过引用传递还是将实际数据从一个地方移动到另一个地方?

任何人都有MVC3性能调优方面的经验吗?

这是一个组成的例子.在这个例子中,很容易将"TestData"类和内容传递给视图,但是我只需要这个类中的几个项目.所以我想知道我是否应该在控制器中添加逻辑并在视图模型中为这些项添加字段,或者只是不打扰并移动所有类数据,包括我不需要的数据.

public class testIndexViewModel
{
    public string   Url { get; set; }
    public PageMeta PageMeta { get; set; }
    public TestData TestData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

谢谢,

Ste*_*kes 1

您创建的类ViewModel将添加到ViewDataDictionary您编译的自定义View类通过其基类访问的System.Web.Mvc.ViewPage<ViewModelType>类中。这意味着我很确定您的ViewModel- 一旦创建 - 总是通过引用来访问,而不是在各处复制。

您可能遇到的唯一性能问题(我认为)是首先创建 1MB 对象的结果;您可能会创建多少个这样的对象,多久创建一次?

就我个人而言,如果没有首先进行负载测试并注意到它实际上导致了问题,我不会担心性能优化。如果确实如此,并且您的应用程序在任何时候都只需要一小部分数据,那么您可以构建优化。

最后,如果您的视图中有代码来筛选 1MB 数据并挑选出您想要显示的部分,您可能只想向视图传递它所需的数据,以使代码更具可读性,并且更好地分离控制器和视图的职责。

http://en.wikipedia.org/wiki/Premature_optimization#When_to_optimize