[代码]获取源页的控件值
时间: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));
}
}
}
测试一下,看看是不是已经正确的获取了源页中的用户名呢?










