ASP.Net MVC的加载页面

时间:2009-02-18 16:48:52

标签: asp.net-mvc

我正在使用ASP.Net MVC来创建一个网站,它需要做一些处理(5-10秒)才能将视图返回给用户。我不想让用户盯着冰川进度栏,而是想表现出某种“请等待/我们会马上回来”动画的GIF让他们感兴趣。

有没有人知道实现这个目标的好方法?

(我找到this回答,但它不是我需要的,这会在返回视图后使用jQuery来获取数据。我想在等待时显示“Please Wait”要出现的观点)

由于

1 个答案:

答案 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会发生什么,...