在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>