Asp.Net中的脚本回调和Server.Transfer页面传值

asp.net|server|脚本|页面

在Asp.Net中经常要用到脚本回调和页面间的传值,下面是关于ScriptCallBack和Server.Transfer简单的示例代码

WebForm1.aspx
给Head中增加__doPostBack脚本,如果页面含有HyperLink等按钮控件,该脚本和2个隐藏控件"__EVENTTARGET"和"__EVENTARGUMENT"由FrameWork自动生成,若没有需要手动添加

<SCRIPT language="javascript">
<!--
function __doPostBack(eventTarget, eventArgument) {
    var theform;
    if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {
        theform = document.forms["Form1"];//注意此处的FormID
        } else {
        theform = document.Form1;//还有此处
    }
    theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
    theform.__EVENTARGUMENT.value = eventArgument;
    theform.submit();
}
// -->
</SCRIPT>

<form id="Form1" method="post" runat="server">
<INPUT type="hidden" name="__EVENTTARGET" >
<INPUT type="hidden" name="__EVENTARGUMENT" >
<A href="javascript:__doPostBack('ScriptCallBack','ScriptCallBack')">ScriptCallBack</A>
<ASP:TEXTBOX id="TextBox1" style="Z-INDEX: 101; LEFT: 112px; POSITION: absolute; TOP: 152px" runat="server">sometext</ASP:TEXTBOX>

C#
WebForm1.aspx.cs
private void Page_Load(object sender, System.EventArgs e)
{
    if (IsPostBack)
        if (Request.Form["__EVENTARGUMENT"]== "ScriptCallBack")
            Server.Transfer("WebForm2.aspx", true);//第二个参数指示是否保留页面的Form和QuerryString的值
}

WebForm2.aspx.cs
private void Page_Load(object sender, System.EventArgs e)
{
    if(this.Context.Handler != sender)
        Response.Write(Request.Form["TextBox1"]);
}

VB.NET
WebForm1.aspx.vb
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    If IsPostBack Then
        If Request.Form("__EVENTARGUMENT") = "ScriptCallBack" Then
            Server.Transfer("WebForm2.aspx", True)'第二个参数指示是否保留页面的Form和QuerryString的值
        End If
    End If
End Sub

WebForm2.aspx.vb
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    If Not Me.Context.Handler Is sender Then
        Response.Write(Request.Form("TextBox1"))
    End If
End Sub

时间: 2025-01-02 10:20:19

Asp.Net中的脚本回调和Server.Transfer页面传值的相关文章

绝对酷,如何解决asp.net中javascript脚本的问题(使用服务器控件执行客户端脚本)

论坛中很多人问如何在asp.net中新开一个没有工具栏等等的窗口,大家都说用javascript解决,不错这件事实可以解决了,但是使用通用html control但是就不能用asp.net代码操作他了现在我就为大家解决这个难题. 创建一个窗口新开一个窗口的程序我向大家一定非常熟悉了,简单说一下window.open(url, [name], [features])url是要打开窗口的地址name是新开窗口的名称features是新开窗口的一些属性,例如尺寸等 打开窗口利用服务器属性最简单的把客户

开发人员如何调试ASP页中的脚本对象 (2)

对象|脚本 调试和脚本库因为脚本对象本身是用脚本编写的,调试你编写的和脚本对象模型相互作用的脚本可能就很复杂,这有以下几个原因: 首先,当你利用调试器单步执行你自己的脚本时,你可能会进入不熟悉的并且非常复杂的脚本库代码中.其次,如果在脚本库内部发生了一个错误,单步执行它可能会是冗长乏味的,并且还不一定能帮你查明错误.最后,有时追随事件次序及脚本和脚本对象模型之间的控制流可能是很困难的. 现在,你可以利用下面这些脚本对象模型调试选项在这些环境下调试你的应用程序: 捕捉低层错误(Catch low-

绝对酷,如何解决asp.net中&amp;#106avascript脚本的问题(使用服务器控件执行客户端脚本)

asp.net|服务器|脚本|解决|客户端|控件|问题|执行 论坛中很多人问如何在asp.net中新开一个没有工具栏等等的窗口,大家都说用javascript解决,不错这件事实可以解决了,但是使用通用html control但是就不能用asp.net代码操作他了现在我就为大家解决这个难题. 创建一个窗口新开一个窗口的程序我向大家一定非常熟悉了,简单说一下window.open(url, [name], [features])url是要打开窗口的地址name是新开窗口的名称features是新开窗

开发人员如何调试ASP页中的脚本对象 (3)

对象|脚本 跟踪事件当一个ASP页使用脚本对象模型时,单独脚本对象触发事件对状态改变(如Recordset1_ondatasetcomplete)或用户行为(如Button1_onclick)进行反应.通常,你需要知道你自己的脚本及由脚本对象模型触发的事件在什么时候执行. 为此,通过把@trace 或 @trace事件选项设置为true来打开事件跟踪.如果你使事件跟踪有效,当事件发生时,事件信息就被写到ASP页中.例如,ASP页的一部分可能像下面这个样子: EVENT TRACE: thisPa

开发人员如何调试ASP页中的脚本对象 (1)

对象|脚本 什么是脚本对象模型?Visual InterDev脚本对象模型定义了一套带有事件,属性和方法的对象,你可以在网络应用程序中使用这些对象的事件,属性和方法.大多数脚本对象代表用户界面,基本单元像按钮和文本框,及风格类似于Microsoft Visual Basic?中控件的函数. 不像Visual Basic控件,Visual InterDev中的脚本对象不需要一个专门的运行时间:它们是在脚本文件中定义的,当你使用这些对象时,要把这些文件包含在你的ASP页中.尽管这些文件只是脚本,但它

ASP.NET中使用多个runat=server form

ASP.NET 在同一个页面不支持多个 runat=server forms,要解决这个问题,可以把每个 form 放在一个单独的 panel 控件中,这样用户就可以简单地通过单选按钮在不同 panel 间切换.代码如下:2FormExample.aspx <%@ Page language="c#" Codebehind="2FormExample.cs" AutoEventWireup="false" Inherits="_3

在 ASP.NET 中使用多个 runat=server form

asp.net|server ASP.NET 在同一个页面不支持多个 runat=server forms,要解决这个问题,可以把每个 form 放在一个单独的 panel 控件中,这样用户就可以简单地通过单选按钮在不同 panel 间切换.代码如下:2FormExample.aspx <%@ Page language="c#" Codebehind="2FormExample.cs" AutoEventWireup="false" In

asp.net中为什么每点一次按钮页面回到最上面

问题描述 自己弄的网站,每点一次登录,注册,购买之类的按钮,页面就回到最上面是为什么.可以设置的吗 解决方案 解决方案二:用的是asp.net的服务器控件吧就是那些<asp:button>之类导致整个页面回发整个页面都刷新了解决方案三:引用1楼houmonkey123的回复: 用的是asp.net的服务器控件吧就是那些<asp:button>之类导致整个页面回发整个页面都刷新了 是的,可以设置不刷新的吗解决方案四:使用UpdatePanel,可以避免这种问题.解决方案五:引用3楼s

.NET中利用js让子窗体向父页面传值的实现方法_实用技巧

子页面C#后台代码: 复制代码 代码如下: /// <summary>        /// 将设置好的值赋给父页面        /// </summary>        /// <param name="count">需要传递的值</param>        void SetValueToParentPage(int count, string strPersons)       {           StringBuilder