在操作返回视图之前显示“加载”消息

时间:2011-07-05 06:06:55

标签: asp.net-mvc-2

我有2种不同类型的用户

当我登录时,我将我的页面提交到帐户/登录

取决于我重定向到的用户类型(使用RedirectToAction)

教师/索引 要么 学生/索引。

动作学生/索引是一个简单的动作,并立即返回其视图。

但是动作教师/索引具有巨大的数据访问权限,视图将在一分钟后返回。 (我将优化数据访问不要担心留言,因为它不是这篇文章的一部分)

在一分钟内,我想在浏览器中显示“加载”消息。

我该怎么做?

我有Jquery和MVC2

1 个答案:

答案 0 :(得分:3)

一种可能性是将这个动作分成两个:一个将呈现一个简单的视图,一个将进行重组并呈现一个部分。因此,当教师登录时,您将重定向到第一个操作并呈现包含微调器的简单HTML视图。然后,您将触发对第二个操作的AJAX调用以进行数据访问,将部分注入DOM并隐藏进度。

所以你可以把这样的东西放到视图中:

<img id="progress" src="progress.gif" alt="" />
<div id="result" data-url="<%= Url.Action("TeacherData") %>"></div>

然后在单独的js文件中触发AJAX调用:

$(function() {
    $.ajax({
        url: $('#result').data('url'),
        type: 'POST',
        complete: function() {
            $('#progress').hide();
        },
        success: function(result) {
            $('#result').html(result);
        }
        error: function() {
            alert('oops');
        }
    });
});

并在您的控制器上:

public ActionResult Teacher()
{
    return View();
}

[HttpPost]
public ActionResult TeacherData()
{
    var model = ... do the heavy data access
    return PartialView(model);
}