[代码]获取源页的控件值
时间:2010-11-03 来源:光脚丫思考
一、获取的是源页上的控件
示例代码
在这个示例代码中,源页有一个名为UserNameTextBox的TextBox控件,用户可以在这个控件中输入自己的姓名,然后单击【提交到目标页】按钮,源页就会被发送到目标页DestinationPage.aspx。在目标页的代码中,通过Page.PreviousPage属性获取源页的引用,然后通过FindControl()找到UserNameTextBox控件,进而通过此控件的Text属性获取用户在源页输入的姓名。代码如下:
源页的代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SourcePage1.aspx.cs" Inherits="SourcePage" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> </head> <body> <form id="form1" runat="server"> <div> <asp:TextBox ID="UserNameTextBox" runat="server"></asp:TextBox> <br /> <asp:Button ID="SubmitButton" runat="server" Text="提交到目标页" PostBackUrl="~/DestinationPage.aspx" /> </div> </form> </body> </html>
下面是目标页获取源页数据的代码:
if (this.PreviousPage != null) { TextBox UserNameTextBox = (TextBox)this.PreviousPage.FindControl("UserNameTextBox"); if (UserNameTextBox != null) { this.Response.Write(string.Format( "{0}, Welcome you to the ASP.NET 4 World!", UserNameTextBox.Text)); } }
测试上面的代码你就会发现,已经而已正确的从目标页获取用户在源页当中输入的用户名了。^_^
二、获取的是源页控件中的控件
重点说明
这种情况比前面的情况稍微麻烦一点,但是也不至于困难到让人望而生畏的地步。
简单的说,就是首先获取包含控件的容器控件,然后再通过容器控件的FindControl()方法进一步获取所需要的控件。
如果,控件是在容器控件中的容器控件中呢?
道理是一样的,继续找容器控件中的容器控件,直到找到了包含控件的上一级容器控件,然后再FindControl()它出来就行了。
示例代码
本示例代码中,我们要找的是页面的Login控件中的用来输入用户名的文本框控件。这个控件的ID是UserName。首先我们通过调用Page.PreviousPage.FindControl()来找到Login控件,然后再调用Login.FindControl()进一步找到文本框控件。
下面是源页中的代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="SourcePage2.aspx.cs" Inherits="SourcePage2" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> </head> <body> <form id="form1" runat="server"> <div> <asp:Login ID="UserLogin" runat="server"> </asp:Login> <asp:Button ID="SubmitButton" runat="server" Text="提交到目标页" PostBackUrl="~/DestinationPage.aspx" /> </div> </form> </body> </html>
目标页中获取用户名的代码如下:
if (this.PreviousPage != null) { Login UserLogin = (Login)this.PreviousPage.FindControl("UserLogin"); if (UserLogin != null) { TextBox UserNameTextBox = (TextBox)UserLogin.FindControl("UserName"); if (UserNameTextBox != null) { this.Response.Write(string.Format( "{0}, Welcome you to the ASP.NET 4 World!", UserNameTextBox.Text)); } } }
测试一下,看看是不是已经正确的获取了源页中的用户名呢?