zhhui.net

月明星稀,乌鹊南飞。绕树三匝,何枝可依?

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
先看代码
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(ByVal sender As ObjectByVal 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(ByVal sender As ObjectByVal 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>






 

posted on 2006-03-20 18:09  zhhui  阅读(818)  评论(0编辑  收藏  举报