【问题标题】:Load a partial from an action into an Iframe将动作中的部分内容加载到 iframe 中
【发布时间】:2015-08-05 15:01:15
【问题描述】:

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

我希望能够将部分加载到 iframe 中,因此不需要插入 DOM,但我不确定如何执行此操作。 Action 期望一个相当复杂的 JSON 对象能够构建结果视图。

最终,我想将 Iframe 的目标设置为返回 View 的操作,并且仍然能够将呈现视图所需的必要 JSON 对象传递给该操作。这样视图被简单地加载,而不是依赖于 IE 的狡猾的 DOM 操作来插入数据。

这可能吗?

【问题讨论】:

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


    【解决方案1】:

    首先,通过删除 AJAX 要求,您也不再需要使用 JSON。 JSON 仍然需要 JavaScript 在视图中进行处理,而 JavaScript 负责解析和操作 26MB 的 JSON 对象始终是个问题。

    如果您可以迁移到 iframe,则可以将实际的强类型模型传递给您的视图,然后让 Razor 完成基于模型生成 HTML 的繁重工作。为此,您不想使用局部视图,而是使用没有布局的视图。只需将以下内容添加到 cshtml 的顶部:

    @{ Layout = null; }
    

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

    【讨论】:

    • 我已经让 Razor dot 工作了,我的操作是通过 AJAX 返回一个部分,所以 26MB 实际上是那个部分的标记。 AJAX 调用是在单击按钮时进行的,并将 JSON 对象传递给操作以生成视图。我想要做的是在按钮上单击让 JSON 对象用于加载视图作为 IFrame 的目标。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    相关资源
    最近更新 更多