先看代码
Listing 3-9: Page1.aspx
VB

<%@ Page Language=”VB” %>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN”
“http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
<script runat=”server”>
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs)
Label1.Text = “Hello “ & TextBox1.Text & “<br />” & _
“Date Selected: “ & Calendar1.SelectedDate.ToShortDateString()
End Sub
</script>
<html xmlns=”http://www.w3.org/1999/xhtml” >
<head runat=”server”>
<title>First Page</title>
</head>
<body>
<form id=”form1” runat=”server”>
Enter your name:<br />
<asp:Textbox ID=”TextBox1” Runat=”server”>
</asp:Textbox>
<p>
When do you want to fly?<br />
<asp:Calendar ID=”Calendar1” Runat=”server”></asp:Calendar></p>
<br />
<asp:Button ID=”Button1” Runat=”server” Text=”Submit page to itself”
OnClick=”Button1_Click” />
<asp:Button ID=”Button2” Runat=”server” Text=”Submit page to Page2.aspx”
PostBackUrl=”Page2.aspx” />
<p>
<asp:Label ID=”Label1” Runat=”server”></asp:Label></p>
</form>
</body>
</html>

C#

<%@ Page Language=”C#” %>
<script runat=”server”>
protected void Button1_Click (object sender, System.EventArgs e)
{
Label1.Text = “Hello “ + TextBox1.Text + “<br />” +
“Date Selected: “ + Calendar1.SelectedDate.ToShortDateString();
}
</script>

在Listing 3-9: Page1.aspx中,有两个button。两个button提交form到不同的位置。
第一个button提交form到自身,是ASP.NET 1.0/1.1的默认行为。这个button包含一个OnClick事件。
第二个button使用PostBackUrl属性,这个属性是一个string值,它指出了要提交到文件的位置--Page2.aspx。

Listing 3-10: Page2.aspx
VB

<%@ Page Language=”VB” %>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN”
“http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
<script runat=”server”>
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim pp_Textbox1 As TextBox
Dim pp_Calendar1 As Calendar
pp_Textbox1 = CType(PreviousPage.FindControl(“Textbox1”), TextBox)
pp_Calendar1 = CType(PreviousPage.FindControl(“Calendar1”), Calendar)
Label1.Text = “Hello “ & pp_Textbox1.Text & “<br />” & _
“Date Selected: “ & pp_Calendar1.SelectedDate.ToShortDateString()
End Sub
</script>
<html xmlns=”http://www.w3.org/1999/xhtml” >
<head runat=”server”>
<title>Second Page</title>
</head>
<body>
<form id=”form1” runat=”server”>
<asp:Label ID=”Label1” Runat=”server”></asp:Label>
</form>
</body>
</html>

C#

<%@ Page Language=”C#” %>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN”
“http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
<script runat=”server”>
protected void Page_Load(object sender, System.EventArgs e)
{
TextBox pp_Textbox1;
Calendar pp_Calendar1;
pp_Textbox1 = (TextBox)PreviousPage.FindControl(“Textbox1”);
pp_Calendar1 = (Calendar)PreviousPage.FindControl(“Calendar1”);
Label1.Text = “Hello “ + pp_Textbox1.Text + “<br />” + “Date Selected: “ +
pp_Calendar1.SelectedDate.ToShortDateString();
}
</script>

有两种方法取得Page1.aspx中control的值:
第一种:如上Listing 3-10所示,使用PreviousPage的FindControl 方法,其中的字符串为Page1.aspx中control的id值。
第二种:如下Listing 3-11所示,为Page1.aspx中control建立属性。

Listing 3-11: Exposing the values of the control from a Property
VB

<%@ Page Language=”VB” %>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN”
“http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
<script runat=”server”>
Public ReadOnly Property pp_TextBox1() As TextBox
Get
Return TextBox1
End Get
End Property
Public ReadOnly Property pp_Calendar1() As Calendar
Get
Return Calendar1
End Get
End Property
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Label1.Text = “Hello “ & TextBox1.Text & “<br />” & _
“Date Selected: “ & Calendar1.SelectedDate.ToShortDateString()
End Sub
</script>

C#

<%@ Page Language=”C#” %>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN”
“http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
<script runat=”server”>
public TextBox pp_TextBox1
{
get
{
return TextBox1;
}
}
public Calendar pp_Calendar1
{
get
{
return Calendar1;
}
}
protected void Button1_Click (object sender, System.EventArgs e)
{
Label1.Text = “Hello “ + TextBox1.Text + “<br />” +
“Date Selected: “ + Calendar1.SelectedDate.ToShortDateString();
}
</script>

Listing 3-12: Consuming the exposed properties from the first page
VB

<%@ Page Language=”VB” %>
<%@ PreviousPageType VirtualPath=”Page1.aspx” %>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN”
“http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
<script runat=”server”>
Protected Sub Page_Load()Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Label1.Text = “Hello “ & PreviousPage.pp_Textbox1.Text & “<br />” & _
“Date Selected: “ & _
PreviousPage.pp_Calendar1.SelectedDate.ToShortDateString()
End Sub
</script>

c#

<%@ Page Language=”C#” %>
<%@ PreviousPageType VirtualPath=”Page1.aspx” %>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN”
“http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
<script runat=”server”>
protected void Page_Load(object sender, System.EventArgs e)
{
Label1.Text = “Hello “ + PreviousPage.pp_TextBox1.Text + “<br />” +
“Date Selected: “ +
PreviousPage.pp_Calendar1.SelectedDate.ToShortDateString();
}
</script>

为了使用Page1.aspx的属性,上面代码必须加入<%@ PreviousPageType VirtualPath=”Page1.aspx” %>,之后可以通过IntelliSense智能感看到PreviousPage属性。

注意:你仍能使用Page1.aspx中button的OnClick事件,这时先提交到Page1.aspx,然后再跨页面提交到Page2.aspx。

最后,怎么能知道请求来自于Page1.aspx,还是来自于Page2.aspx呢?
使用IsCrossPagePostBack属性

Listing 3-13: Using the IsCrossPagePostBack property
VB

<%@ Page Language=”VB” %>
<%@ PreviousPageType VirtualPath=”Page1.aspx” %>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN”
“http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
<script runat=”server”>
Protected Sub Page_Load()Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
If Page.IsCrossPagePostBack Then
Label1.Text = “Hello “ & PreviousPage.pp_Textbox1.Text & “<br />” & _
“Date Selected: “ & _
PreviousPage.pp_Calendar1.SelectedDate.ToShortDateString()
Else
Response.Redirect(“Page1.aspx”)
End If
End Sub
</script>

c#

<%@ Page Language=”C#” %>
<%@ PreviousPageType VirtualPath=”Page1.aspx” %>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN”
“http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”>
<script runat=”server”>
protected void Page_Load(object sender, System.EventArgs e)
{
if (Page.IsCrossPagePostBack) {
Label1.Text = “Hello “ + PreviousPage.pp_Textbox1.Text + “<br />” +
“Date Selected: “ +
PreviousPage.pp_Calendar1.SelectedDate.ToShortDateString();
}
else
{
Response.Redirect(“Page1.aspx”);
}
}
</script>

转载于:https://www.cnblogs.com/zhhui/archive/2006/03/20/354245.html

Professional ASP.NET 2.0之跨页提交-Cross Page Posting相关推荐

  1. ASP.NET 2.0 中实现跨页提交 (碧血黄沙)

    在ASP.NET 2.0中,对于跨页提交已经有了非常合理的解决方案 下面是一个示例: BeginPage.aspx: 请注意Button1的PostBackUrl属性设置 <%@ Page La ...

  2. [导入]ASP.NET 2.0 中实现跨页提交 (碧血黄沙)

    在ASP.NET 2.0中,对于跨页提交已经有了非常合理的解决方案 下面是一个示例: BeginPage.aspx: 请注意Button1的PostBackUrl属性设置 <%@ Page La ...

  3. 一起谈.NET技术,ASP.NET MVC2.0在Tab页中实现异步无刷新分页

    概述 很多地方都存在以Tab页来呈现数据的方式,比如网易.新浪.搜狐.QQ等知名的门户网站的首页,还有大家熟知的博客园首页,都是用了tab页来显示数据.大家之所以喜欢用Tab,因为它能大大的增加显示数 ...

  4. 《professional asp.net 2.0》读书笔记--连载2

    1          User Controls, Server Controls, Modules and Handlers [2006-10-26] 1.1         通过<深入了解a ...

  5. ASP.NET 2.0中的跨页面提交

    简介 在ASP.NET 1.X 版本中,页面都是提交到自己本身,并不能方便的指定需要提交的目的页面.例如FirstPage.aspx中的button只能提交到FirstPage.aspx,而不能提交到 ...

  6. ASP.NET 2.0中实现跨页面提交

    ASP.NET 2.0中实现跨页面提交 在ASP.NET 1.X 版本中,页面都是提交到自己本身,并不能方便的指定需要提交的目的页面.例如FirstPage.aspx中的button只能提交到Firs ...

  7. 你可能已经知道或者不知道的ASP.NET 2.0技巧(转载)

    1.在CallBack之后保持滚动条的位置 在Asp.Net1.1中,CallBack之后保持滚动条的位置是一件非常痛苦的事情,特别是页中有一个Grid并且想要编辑特定的行.为了不停留在想要得行,页面 ...

  8. ASP.NET AJAX Programmer's Reference : with ASP.NET 2.0 or ASP.NET 3.5

    密切关注此书,与Professional ASP.NET 2.0 Server Control and Component Development是同一作者. 而且此书也是砖头书.1536页 转载于: ...

  9. ASP.NET 2.0服务器控件与组件开发中文版即将出版

    Professional ASP.NET 2.0 Server Control and Component Development的中文版的书已经翻译成中文了,本书比较厚,不知道会翻译的如何. htt ...

最新文章

  1. Xamarin.FormsShell基础教程(7)Shell项目关于页面的介绍
  2. 物联网与应用数字战略
  3. Java排序算法之——希尔排序
  4. Java使用Future设置方法超时
  5. java mysql 清空表_MySQL 删除数据表
  6. hdu 5093 二分匹配
  7. POJ.2774.Long Long Message/SPOJ.1811.LCS(后缀数组 倍增)
  8. 算法训练营 重编码_编码训练营后如何找到工作
  9. pat1069. The Black Hole of Numbers (20)
  10. IS-IS邻接关系建立过程
  11. 有赞大裁员:裁员会超过1500人,加盟4年半的百度副总裁也已离职
  12. 华为OD机试(JAVA)真题II
  13. 性格测试c语言程序,性格测试的题目及答案
  14. 为什么c语言运行后输入的中文会乱码
  15. 乐吾乐 Topology 全新优化1.0已经内测啦
  16. ASP.NET Core 2.1 开发跨平台应用教程
  17. 霜降|JEPaaS提醒您注意防寒保暖
  18. Linux基本操作知识一
  19. oracle通过imp导出数据库时提示:这些对象由***导出,而不是当前用户解决方法
  20. 解决GitHub频繁要求verify email的问题

热门文章

  1. Pandas DataFrame索引和列属性
  2. 二叉搜索树bst_二进制搜索树(BST)–搜索插入和删除
  3. jenkins的邮件提醒
  4. office 365将英文改为中文
  5. 解读 V8 GC Log(二): 堆内外内存的划分与 GC 算法
  6. [20171113]修改表结构删除列相关问题2.txt
  7. MongoDB实战系列之二:MongoDB的常用操作
  8. python3.6 - threading 多线程编程基础(1)
  9. VI全屏文本编辑器的命令总结
  10. 将long型转换为多少MB的方法