我希望在我的代码后面发生某些进程后执行一个调用Javascript函数的RegisterStartupScript。它基本上是一个用CSS3制作的装载循环装饰。我在按钮clientclick上显示它(使用javascript),当我知道该过程将需要一段时间并且我在过程完成时隐藏它。一切正常,但现在我有一个过程,我使用response.redirect使用另一个空的webform下载文件。文件下载正常,但RegisterStartupScript调用不起作用。我理解响应是问题,但我也不需要在解决方法中解决这个问题(我不想改变整个方式,因为它是在许多其他页面和进程中实现的。我将提供相关的代码(不是所有),万一你可以给我一个解决它的直接方法。
的Javascript
function LoadingLoopOn()
{
$('#outerAlignId').addClass("outerAlign");
$('#middleAlignId').addClass("middleAlign");
$('#innerAlignId').addClass("innerAlign");
$('#OutterCircleId').addClass("OutterCircle");
$('#InnerCircleId').addClass("InnerCircle");
$('#Loadinglbl').addClass("LoadingLabelStyle");
}
function LoadingLoopOff()
{
$('#outerAlignId').removeClass("outerAlign");
$('#middleAlignId').removeClass("middleAlign");
$('#innerAlignId').removeClass("innerAlign");
$('#OutterCircleId').removeClass("OutterCircle");
$('#InnerCircleId').removeClass("InnerCircle");
$('#Loadinglbl').removeClass("LoadingLabelStyle");
}
HTML(它位于母版页上,能够在每个网页中使用它)
<asp:Panel ID="outerAlignId" ClientIDMode="Static" runat="server" CssClass="outerAlign">
<div id="middleAlignId" class="middleAlign">
<div id="innerAlignId" class="innerAlign">
<div id="OutterCircleId" class="OutterCircle"></div>
<div id="InnerCircleId" class="InnerCircle"></div>
<asp:Label ID="Loadinglbl" ClientIDMode="Static" runat="server" Text="Loading..." CssClass="LoadingLabelStyle"></asp:Label>
</div>
</div>
</asp:Panel>
HTML按钮示例我想用它
<asp:ImageButton ID="ExportExId" ClientIDMode="Static" runat="server" OnClientClick="LoadingLoopOn();" OnClick="ExportExId_Click" CssClass="..." ImageUrl="..." />
CS#Code落后于
protected void ExportExId_Click(object sender, ImageClickEventArgs e)
{
//...
//Many code and DB treatment goes here, to finally get a temporally Excel file in the server
//..
//I call the page with the file name and path
Response.Redirect(String.Format("DownloadForm.aspx?FileName={0}&Path={1}", fileExported.Name, "Temp" + UserName));
//This piece of code must be excuted in its webform after the redirect (once ee finished)
ScriptManager.RegisterStartupScript(this, GetType(), "LoadingLoopOff", "LoadingLoopOff();", true);
}
正如我在评论中所标记的,可能的解决方案可能是AJAX。进行ajax调用以强制页面更新,然后处理该函数(在加载时),或通过此ajax调用直接调用该函数。问题是我不知道如何在这种情况下使用AJAX ...
非常感谢,