我打电话给一个restfull api,这给了我一些"摘要"有关基于搜索查询的产品的信息。结果显示在页面上。在此之后,我希望页面(ajax?)加载其他信息,如产品的所有图像,而无需用户注意。图像将异步加载到旋转木马中。问题是我将如何实现这一目标?
我应该从我的视图中调用控制器操作吗?我尝试了这个,但我不能像孩子一样调用异步函数。所以我想我调用了一个javascript函数,让它做一个ajax调用来获取图像。
我的问题是这是最好的方法吗?这会慢下来吗?
答案 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),允许用户继续与网页交互,而不会遇到延迟/冻结。