【问题标题】:MVC C# multiple async ajax callsMVC C# 多个异步 ajax 调用
【发布时间】:2015-01-26 11:23:29
【问题描述】:

我正在调用一个 restfull api,这给了我一些基于搜索查询的关于产品的“摘要”信息。结果显示在页面上。呈现后,我希望页面(ajax?)加载附加信息,如产品的所有图像,而不会引起用户注意。图像将异步加载到轮播中。问题是我将如何实现这一目标?

我应该从我的角度调用控制器动作吗?我试过了,但我不能将异步函数称为子函数。所以我想我调用一个 javascript 函数并让它做一个 ajax 调用来获取图像。

我的问题是这是最好的方法吗?这会减慢视图吗?

【问题讨论】:

    标签: c# ajax asp.net-mvc


    【解决方案1】:

    根据我的经验,最好在视图模型中包含所有信息(名称、描述、价格、图片等)。例如,您通过控制器(或任何其他层)从数据库中检索数据,然后通过控制器返回具有特定视图模型和数据的视图。但是,在您的情况下,您可能有一张大图像,并且在一个查询中加载它们可能效率不高。为了解决这个问题,您可以在控制器中创建单独的操作并在您通过 AJAX 呈现视图之后加载图像。如果调用是异步的,浏览器不会被冻结,但很高兴通知用户正在加载某些东西 - 在这种情况下 - 图像。

    【讨论】:

    • 这听起来正是我想要的。所以只是为了澄清我不明白:我会渲染显示摘要信息的局部视图,并在这个局部视图之后触发一个调用新操作的 javascript ajax 函数来获取图像并将它们附加到正确的位置?
    • 是的。两个分开的动作。
    【解决方案2】:

    我会考虑在视图底部执行一些 JavaScript 代码(以确保已呈现文档正文)以对负责返回图像数据的控制器进行 AJAX 调用,例如

    视图的底部。

    @section Scripts {
        <script type="text/javascript">
           // Load the image data using AJAX.
        </script>
    }
    

    以上假设视图使用的布局页面有一个RenderSection("Scripts", false) 调用。如果没有,则只需删除 @section {} 位。

    AJAX 调用可以是 async : true(我假设您使用的是 jQuery),以允许用户继续与网页交互,而不会遇到延迟/冻结。

    【讨论】:

    • 谢谢杰森,它成功了。我以前从未使用过该部分的东西,而且效果很好!
    猜你喜欢
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多