我正在使用ASP.Net MVC来创建一个网站,它需要做一些处理(5-10秒)才能将视图返回给用户。我不想让用户盯着冰川进度栏,而是想表现出某种“请等待/我们会马上回来”动画的GIF让他们感兴趣。
有没有人知道实现这个目标的好方法?
(我找到this回答,但它不是我需要的,这会在返回视图后使用jQuery来获取数据。我想在等待时显示“Please Wait”要出现的观点)
由于
答案 0 :(得分:5)
我认为您引用的解决方案对您有用。您只需要使用“请等待消息”立即返回初始控制器操作,然后让AJAX调用根据您的处理实际检索内容。如果请求确实需要5-10秒,您可能还需要调整AJAX请求的超时值,以便能够完成。我不知道默认超时是什么,但可能小于你需要的。
编辑示例:
查看代码:
<script type="text/javascript">
$(document).ready( function() {
$.ajax({
type: "POST",
url: '<$= Url.Action("GetSlowData","Controller") %>',
data: 'id=<%= ViewData["modelID"] %>',
timeout: 15000, // wait upto 15 secs
success: function(content){
$("#container").html(content);
}
});
});
</script>
...
<div id="#container">
Please wait while I retrieve the data.
</div>
控制器
public ActionResult ViewMyData( int id )
{
ViewData["modelID"] = id;
return View();
}
[AcceptVerbs( HttpVerbs.Post )]
public ActionResult GetSlowData( int id )
{
var model = ... do what you need to do to get the model...
return PartialView(model);
}
您还需要一个局部视图(ViewUserControl)来获取模型并呈现模型的视图。请注意,这不完整 - 您需要添加错误处理,您可能需要考虑如果未启用javascript会发生什么,...