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

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

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

 1<script language="javascript">   
 2<!--   
 3function __doPostBack(eventTarget, eventArgument) {   
 4var theform;   
 5if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {   
 6theform = document.forms["Form1"];//注意此处的FormID   
 7} else {   
 8theform = document.Form1;//还有此处   
 9}   
10theform.__EVENTTARGET.value = eventTarget.split("$").join(":");   
11theform.__EVENTARGUMENT.value = eventArgument;   
12theform.submit();   
13}   
14// -->   
15</script>
 1<form id="Form1" method="post" runat="server">
 2<input name="__EVENTTARGET" type="hidden"/>
 3<input name="__EVENTARGUMENT" type="hidden"/>
 4<a href="javascript:__doPostBack('ScriptCallBack','ScriptCallBack')">ScriptCallBack</a>
 5<asp:textbox id="TextBox1" runat="server" style="Z-INDEX: 101; LEFT: 112px; POSITION: absolute; TOP: 152px">sometext</asp:textbox>
 6
 7C#    
 8**WebForm1.aspx.cs**   
 9private void Page_Load(object sender, System.EventArgs e)   
10{   
11if (IsPostBack)   
12if (Request.Form["__EVENTARGUMENT"]== "ScriptCallBack")   
13Server.Transfer("WebForm2.aspx", true);//第二个参数指示是否保留页面的Form和QuerryString的值   
14} 
15
16**WebForm2.aspx.cs  
17** private void Page_Load(object sender, System.EventArgs e)   
18{   
19if(this.Context.Handler != sender)   
20Response.Write(Request.Form["TextBox1"]);   
21} 
22
23VB.NET    
24**WebForm1.aspx.vb**   
25Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load   
26If IsPostBack Then   
27If Request.Form("__EVENTARGUMENT") = "ScriptCallBack" Then   
28Server.Transfer("WebForm2.aspx", True)'第二个参数指示是否保留页面的Form和QuerryString的值   
29End If   
30End If   
31End Sub 
32
33**WebForm2.aspx.vb**   
34Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load   
35If Not Me.Context.Handler Is sender Then   
36Response.Write(Request.Form("TextBox1"))   
37End If   
38End Sub   
39  
40---</form>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus