0

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

我正在查看有关实施此要求的建议。如果我可以连接任何 MVC 事件,那会很酷,因为我想要更少的 Javascript/jQuery 东西,但如果 Javascript/jQuery 是这样的话,那也很好。

目前我没有任何东西,所以任何指针都值得赞赏。

4

1 回答 1

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),但我会留给您。

于 2013-08-19T14:00:24.727 回答