MVC C#多重异步ajax调用

时间:2015-01-26 11:23:29

标签: c# ajax asp.net-mvc

我打电话给一个restfull api,这给了我一些"摘要"有关基于搜索查询的产品的信息。结果显示在页面上。在此之后,我希望页面(ajax?)加载其他信息,如产品的所有图像,而无需用户注意。图像将异步加载到旋转木马中。问题是我将如何实现这一目标?

我应该从我的视图中调用控制器操作吗?我尝试了这个,但我不能像孩子一样调用异步函数。所以我想我调用了一个javascript函数,让它做一个ajax调用来获取图像。

我的问题是这是最好的方法吗?这会慢下来吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

视图的底部。

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

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

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