代码之家  ›  专栏  ›  技术社区  ›  SaaS Developer

ASP.Net MVC加载进度指示器

  •  14
  • SaaS Developer  · 技术社区  · 17 年前

    我有一个MVC控制器,它运行一个进程,设置一些视图数据,然后将这些数据的结果返回给视图中的用户。处理时间取决于正在处理的数据量。我需要一种好方法,在进程运行时在视图中显示动画.gif,让用户知道正在发生什么。

    jQuery似乎还能够提供一种很好的异步方式,在后台调用控制器操作,然后呈现视图。任何帮助都将不胜感激。

    1 回复  |  直到 17 年前
        1
  •  26
  •   Tim Scott    14 年前

    在控制器中:

    public JsonResult GetSomething(int id)
    {
        return Json(service.GetSomething(id));
    }
    

    在视图中(javascript,使用JQuery):

    $('#someLink').click(function()
    {
        var action = '<%=Html.ResolveUrl("~/MyController.mvc/GetSomething/")%>' + $('#someId').val() + '?x=' + new Date().getTime();
        $('#loading').show()
        $.getJSON(action, null, function(something) 
        {
            do stuff with something
            $('#loading').hide()
        });
    });
    

    请注意,这假设一个路由,其中“id”位于操作之后。动作中的“x”参数是为了击败IE中的攻击性缓存。

    <img id="loading" src="images/ajax-loader.gif" alt=""/> 
    <!-- use a css stlye to make display:none -->
    

    获取装载机gif here

    还请注意,您不必使用Json来实现这一点。如果愿意,您可以从控制器操作获取其他内容,如HTML或XML。