它看起来像我想要显示回传之间繁忙的动画gif,是吗?
这里是我如何做到这一点(除非我正在使用它们有自己的进度指示器服务器控制更新面板)
<script type="text/javascript">
window.onbeforeunload = function(){showGif();};
</script>
当页面卸载,因为回发的(点击按钮,发送到服务器),揭示gif图像。当新页面从服务器返回时,图像将消失,因为它现在是一个新页面。
更改标签是一项小操作,因此请求/响应可能会很快转向,您可能永远无法看到图像。为了测试,你可以在你的按钮处理程序中添加一个System.Threading.Thread.Sleep(3000)来模拟一个更长的运行过程。
编辑
AJAX是您唯一的选择,但有许多方法。一个可能的解决方案:
将标签放在UpdatePanel服务器控件中,将按钮放置在更新面板之外,但在aspx页面的更新面板的声明标记中将其设置为AsyncPostbackTrigger。使用OnClientClick处理程序客户端显示gif或使用JQuery将客户端点击处理程序附加到按钮。
ASPX
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="AjaxLabel._Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager runat="server" ID="ScriptManager1"></asp:ScriptManager>
<div>
<asp:UpdatePanel runat="server">
<ContentTemplate>
<asp:Label runat="server" ID="ajaxLabel">Initial value</asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="asyncButton" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<img id="theImage" src="img/success.png" style="display: none;" />
<asp:Button runat="server" ID="asyncButton" Text="Client & Server Click" OnClientClick="showImage();" OnClick="asyncButton_Click" />
</div>
</form>
<script type="text/javascript">
function showImage() {
document.getElementById('theImage').style.display = "block";
}
</script>
</body>
</html>
aspx.cs
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace AjaxLabel
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void asyncButton_Click(object sender, EventArgs e)
{
ajaxLabel.Text = "Server-side value";
}
}
}
像你想显示回发之间繁忙的gif动画在我看来,是这样吗? 不...点击按钮我想要显示一个gif并更改一个标签,标签在服务器端更改后面的代码和gif与客户端..我认为他们将永远不会显示toghter ... – 2013-02-12 13:34:04
答案可能是做一个Ajax请求对吗? – 2013-02-12 13:42:39
是的AJAX然后,看我的编辑。 – 2013-02-12 13:56:55