将动作中的部分加载到Iframe中

时间:2015-08-05 15:01:16

标签: json asp.net-mvc-4 internet-explorer iframe

我在IE中遇到一些性能问题,当一个非常大量的HTML作为从AjAX调用到Action的部分视图返回,然后插入到DOM中。在某些情况下,生成的视图是一个26 MB的表,IE在尝试将其插入DOM时会遇到严重的内存问题。

我希望能够将部分加载到iframe中,这样就不需要插入DOM,但我不知道如何做到这一点。 Action期望一个相当复杂的JSON对象能够顶部构造生成的View。

最终我想将Iframe的目标设置为一个返回View的动作,并且仍然能够将动作传递给渲染视图所需的必要JSON对象。这样就可以简单地加载视图,而不是依靠IE的狡猾的DOM操作来插入数据。

这可能吗?

1 个答案:

答案 0 :(得分:0)

首先,通过删除AJAX要求,您还无需使用JSON。 JSON仍然需要在视图中处理JavaScript,而负责解析和操作26MB JSON对象的JavaScript总是会出现问题。

如果您可以移动到iframe,那么您可以将一个实际的强类型模型传递给您的视图,然后让Razor根据模型重新生成HTML。为此,您不希望使用局部视图,而是使用没有布局的视图。只需将以下内容添加到cshtml的顶部:

@{ Layout = null; }

然后,您只需处理整个事情,就像在MVC中返回视图的任何其他操作一样。