我有一个.NET 4.0 ASPX页面正在执行一系列半复杂的计算。这些计算可能需要一些时间,并在页面上分成许多方法。 ASPX页面上的用户界面包含页面属性,用于检索作为这些计算结果分配的值。Ajax为.NET ASPX加载页面
我想知道推荐的JS/Ajax/jQuery方法,用于在使用ASP.NET进行初始页面加载之后进行计算,并在计算正在处理时运行某种加载效果。
我希望代码尽可能轻便以达到此目的。最佳实践的指针和建议非常感谢。
我有一个.NET 4.0 ASPX页面正在执行一系列半复杂的计算。这些计算可能需要一些时间,并在页面上分成许多方法。 ASPX页面上的用户界面包含页面属性,用于检索作为这些计算结果分配的值。Ajax为.NET ASPX加载页面
我想知道推荐的JS/Ajax/jQuery方法,用于在使用ASP.NET进行初始页面加载之后进行计算,并在计算正在处理时运行某种加载效果。
我希望代码尽可能轻便以达到此目的。最佳实践的指针和建议非常感谢。
这些计算/过程需要多长时间?用户是否需要等待它们完成,或者用户在等待时可以在网站上做其他事情?
也许这不是你正在寻找的,但另一种方法是在服务器上的一个单独的线程(甚至单独的应用程序)中运行计算。您将向用户显示一条消息,说明他们的计算已排队等待处理,并且很快就会开始。
用户可以检查回来,看看它什么时候完成,或者甚至在公牛上有某种通知系统(图片上的红色“你有一个新消息”的事情在Facebook上,或一些类似的功能)告诉他们当它完成并为用户提供一个链接去查看结果。通知程序可以通过AJAX轻松地执行一些背景轮询,以便每隔几分钟检查一次结果。
如果扩展将成为这个应用程序的一个问题,您可能需要研究这种方法。响应页面事件的“在线”处理会在系统扩展时拖延性能,特别是在高负载时间的情况下。通过在后台将让你监视重载队列,卸载这些程序到不同的硬件,而不杀死用户体验或处理页面超时增加新功能排队过程中的意思是“脱机”处理等
如果该操作是同步的,即用户必须等待它完成,则可以使用Ajax ModalPopupExtender通知用户服务器正在执行长时间的计算。
在ModalPopupExtender上,您可以放置微调器图标或者扩展该图标以包含进度条。
标记代码:
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button runat="server" ID="hiddenTargetControlForModalPopup" style="display:none"/>
<ajaxToolkit:ModalPopupExtender runat="server" ID="programmaticModalPopup"
BehaviorID="programmaticModalPopupBehavior" TargetControlID="hiddenTargetControlForModalPopup"
PopupControlID="programmaticPopup" BackgroundCssClass="modalBackground"
DropShadow="True" RepositionMode="RepositionOnWindowScroll" >
</ajaxToolkit:ModalPopupExtender>
<asp:Panel runat="server" CssClass="modalPopup" ID="programmaticPopup" style="background-color:#FFFFCC;display:none;height:75px;width:150px;padding:10px">
<asp:UpdateProgress>
<ProgressTemplate>
<div style="text-align:center">
<div style="margin:auto;"><img alt="loading..." src="images/spinner.gif" /></div>
<p>This may take several minutes...Please wait.</p>
</div>
</ProgressTemplate>
</asp:UpdateProgress>
</asp:Panel>
</asp:UpdatePanel>
JS代码(到的toogle的模式弹出):
function showPopup() {
var modalPopupBehavior = $find('programmaticModalPopupBehavior');
modalPopupBehavior.show();
}
function hidepopup() {
var modalPopupBehavior = $find('programmaticModalPopupBehavior');
modalPopupBehavior.hide();
}
注:在一些先进的情况下,你可能需要实现:
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
然后添加一个名为EndRequestHandler
的JS处理程序,这是ca当服务器从执行中返回时进行填充。
希望有所帮助。
感谢您的支持,我已选择将此处理移到ASP.NET应用程序之外。 – Kevin 2011-03-25 08:38:42
对不起,在这方面的答复延迟,谢谢你的回答,我正在把这个繁重的工作转移到一个控制台应用程序,在ASP.NET应用程序之外单独运行。 – Kevin 2011-03-25 08:38:11