您的位置:首页 > 编程语言 > ASP

asp.net后台等待几秒执行程序或者跳转页面

2015-05-08 20:46 411 查看
方案1 比较全面的解决方案原文地址
下面是几种Asp.net后台cs中,几种让页面等待几秒或一定时间后,再执行下一步操作的方法:

1、Response对象跳出转向

代码:Response.Write( " <meta http-equiv= ‘refresh ‘ content= ’3;url=b.aspx ‘> ");

2、通过Thread方法

代码:System.Threading.Thread.Sleep(3000);

注:这种方法便捷,但不是很科学,它是使系统休眠一定时间

3、跳转函数

代码:ClientScript.RegisterClientScriptBlock(GetType(), "", "<script>alert(\’登录成功!\’);setTimeout(function(){location.href=’b.aspx’},3000); </script>");

4、js函数

代码:

protected void Button1_Click(object sender, EventArgs e)

{

form1.InnerHtml = "系统将在 3 秒后转向 ";

body.Attributes.Add("onload", "setTimeout(‘window.location=\"b.aspx\"’,3000)");

}

下面是一个实例:(拷贝,可直接运行)

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

protected void Button1_Click(object sender, EventArgs e)

{

Page.ClientScript.RegisterStartupScript(Page.GetType(), "s", "t()", true);

}

</script>

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title></title>

<script>

var tt = 3;

function t() {

if (tt < 1) {

window.location = "b.aspx"

return;

};

document.getElementById("<%=form1.ClientID %>").innerHTML = "操作完成,页面将在 " + tt + " 后转向";

tt–;

window.setTimeout("t()", 1000);

}

</script>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="点击测试" />

</div>

</form>

</body>

</html>

方案2 本人推荐的解决方案 原文地址
response.write("<meta http-equiv='Refresh' content='1;URL=daohang.html' /> "); //亲测有效 WENG2014.4.20 22:55

输出这句

1就是1秒 可以修改

url后面接你要跳转的页面

注解:

http-equiv 属性为名称/值对提供了名称。并指示服务器在发送实际的文档之前先在要传送给浏览器的 MIME 文档头部包含名称/值对。

弹出提示框,再跳转(我还没有验证 2014.4.22 1209)

Response.Write("<script>window.alert('你已经发表了新留言!');location.href='index.asp';</script>");

方案3 asp.net 几种页面跳转方式 (点击查看原文)

第一种:

页面注册js脚本跳转,属于GET传值方式

Page.ClientScript.RegisterStartupScript(GetType(), "KEY1", "window.open('" + url + "','测试','_self');", true);

Response.Write("<script type=\"text/javascript\">window.location.href='" + url + "'</script>");

...

第二种:【重定向方法传输

属于GET传值方式

Response.Redirect(url+"?id=1")

由于Response.Redirect方法要进行两次请求响应操作(注:首先是发送一个http请求到客户端,通知需要跳转到新页面,这将导致客户端发送一个新的请求到服务器,换句话说,一个重定向请求实际上是两个请求响应:一个是最初的请求响应,另一个是新的重定向请求响应,因此,我们应该在对性能要求高的网站尽量避免使用这种方法。

要注意的是重定向请求只是一个GET请求,就意味着我们不能从源页中通过重定向命令提交数据。但是我们可以在重定向中使用查询字符串来传递数据。然而,只从技术上说,使用redirect方式确实可以从一个网页跳到另一个网页。相比之下,Server.Transfer会更有效率,但是跳转的范围仅限于同一个Web服务器(同一站点)的不同网页。从本质上说,我们可以使用Server.Transfer来消除不必要的请求响应操作。如果我们需要重定位到不同服务器的网页,就需要使用Response.Redirect方法

第三种:【服务器传输方法

属于POST传值方式

(1)、Server.Transfer(url)

和依赖于客户端向另一个新页发请求不同,服务器传输是一种服务器重定向技术,这种技术通过简单的改变Web服务器所处理的代码来达到请求一个新页的目的。当被请求页和源页面在同一个服务器时,服务器传输要比Response.Redirect方法更有效,这是由于这种技术可以避免额外的开销,仅仅使用服务器的资源就可以进行重定向。要注意的这种技术有一个副作用,在页面进行重定向时,客户端的URL仍然会保持源页面的URL(地址栏地址不变),这可能会使客户认为他们所获得的数据是源页面产生的。当然,在大多数情况下,这不是问题,但是这将使调试变得更困难。

(2)、Sever.Execute(url)

而且跳转的范围仅限于同一个Web服务器(同一站点)的不同网页。这个方法是需要将一个页面的输出结果插入到另一个aspx页面的时候使用,大部分是在表格中,将某一个页面类似于嵌套的方式存在于另一页面(将目标页面插入到源页面中),这个方法的重定向请求是发生在服务器端,所以浏览器的url地址仍然保留的是原页面的地址(地址栏地址不变),

第四种:【实现跨网页提交】属于POST传值方式

<asp:TextBox runat="server"ID="txt_username"></asp:TextBox><br
/>

<asp:Button runat="server"ID="Button4"Text="POST传递
跨页提交"PostBackUrl="~/Login.aspx"/>

在源页面中使用PostBackUrl指定目标页面,然后在目标页面获取源页面中的值:

protectedvoidPage_Load(objectsender, EventArgs e)
{
if(!IsPostBack)
{

//跨页提交   Transfer   Execute  跳转时 PreviousPage均不为空//这个属性无论在何时当前页面进行跨网页提交操作时都会指向源页面,而不是目标页面

if(PreviousPage !=null)
{
if(PreviousPage.IsCrossPagePostBack)
{
TextBox text=PreviousPage.FindControl("txt_username")asTextBox;
this.lbl_param.InnerHtml =text.Text;
}
}
}
}

以上这种获取值的方式,Transfer 和 Execute 也适用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: