如何在MVC应用程序中使用/处理加载程序?

时间:2013-08-19 13:21:35

标签: asp.net-mvc-4

在我目前正在使用的ASP.NET MVC应用程序中,用户可以单击一个页面中的多个位置。因此,在_layout中有一个主菜单,并且对于每个单独的页面,可以存在与该页面相关联的链接。 我正在尝试使用一个将在每次点击时显示的加载器,主要是响应需要时间的地方,但现在每次点击都是如此。 例如,在主页中,用户可以从主菜单中单击“学生”,并且当页面完全加载时,加载程序应该出现并隐藏。在学生页面上可以有一个ajax调用,它可以获取数据并将其绑定到网格。 因此,从用户点击菜单链接并且页面加载时,加载器处于活动/显示状态。一旦页面完全加载,它就会被隐藏。 网格可以具有编辑功能,当用户点击加载程序应显示和隐藏的任何CRUD链接时。

我正在考虑有关实施此要求的建议。 如果我可以连接任何MVC事件,这将是很酷的,因为我想要更少的Javascript / jQuery的东西,但如果Javascript / jQuery的方式,那也没关系。

目前我没有任何东西,所以任何指导者都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

假设正在使用AJAX

我没有看到在没有使用重定向的中间页面的情况下保留此服务器端的方法(这将是不必要的膨胀)。而且,既然你不反对,你可以使用jQuery和blockUI之类的东西轻松实现。

我会让你玩精炼绑定到你关心的链接,但现在我们将假设所有链接。此外,MVC应该使用jQuery来处理Ajax.Actionlink之类的内容,这样我们就可以劫持$.ajaxStart$.ajaxStop等事件:

function showLoadingScreen(enabled){
  return enabled ? $.blockUI() : $.unblockUI();
}
$(document).ajaxStart(function(){
  showLoadingScreen(true);
}).ajaxStop(function(){
  showLoadingScreen(false);
});

稍后你可以将类应用到你关心的链接并绑定到它们(而不是$.ajaxStart),但我会把它留给你。