有以下两个页면Default.aspx와Result.aspx,代码如下:
<!-- 기본.aspx -->
<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/Default.master" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<asp:Content ID="Content1" runat="서버" ContentPlaceHolderID="ContentPlaceHolder1">
<asp:Label ID="Label1" runat="server" Text="여기에 문자열을 입력하세요"></asp:Label>
<asp:TextBox ID="TextBox1" runat="서버"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="~/Result.aspx" /></asp:Content>
//Default.aspx.cs
시스템 사용;
System.Data 사용;
System.Configuration 사용;
System.Web 사용;
System.Web.Security 사용;
System.Web.UI 사용;
System.Web.UI.WebControls 사용;
//System.Web.UI.WebControls.WebParts 사용;
System.Web.UI.HtmlControls 사용;
공개 부분 클래스 _Default : System.Web.UI.Page
{
protected void Page_Load(개체 전송자, EventArgs e)
{
}
}
<!-- 결과.aspx -->
<%@ Page Language="C#" MasterPageFile="~/Default.master" AutoEventWireup="true" CodeFile="Result.aspx.cs" Inherits="Result" Title="제목 없는 페이지" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="서버">
<asp:Label ID="Label1" runat="server" Text="이전 페이지에서 입력하신 문자열은 다음과 같습니다."></asp:Label>
<asp:TextBox ID="TextBox1" runat="서버"></asp:TextBox>
</asp:콘텐츠>
//Result.aspx.cs
시스템 사용;
System.Data 사용;
System.Configuration 사용;
System.Collections 사용;
System.Web 사용;
System.Web.Security 사용;
System.Web.UI 사용;
System.Web.UI.WebControls 사용;
System.Web.UI.WebControls.WebParts 사용;
System.Web.UI.HtmlControls 사용;
공개 부분 클래스 결과: System.Web.UI.Page
{
protected void Page_Load(개체 전송자, EventArgs e)
{
if(이전 페이지 != null)
{
TextBox tb = (TextBox)PreviousPage.FindControl("TextBox1");
if (tb != null)
TextBox1.Text = tb.Text;
}
}
}
这两个页면도指定了MasterPageFile属性.入,Button1사용于提交页면,其PostBackUrl은 Result.aspx입니다.Result.aspx.cs의 Page_Load 방법중에서 TextBox1中显示用户는 이전의 TextBox1中输入의 문자 유형입니다.
TextBox tb = (TextBox)PreviousPage.FindControl( "텍스트박스1");
tb의 值为null입니다. 将以上语句更改为如下代码:
Content con = (Content)PreviousPage.FindControl("Content1");
if (con == null)
반품;
TextBox
)con.FindControl("TextBox1");
但con적은 值为null, 这样后续的语句也不可能执行了.
找到了答案,以下引是bitmask의 설명 :
...마스터 페이지가 페이지를 다시 정렬한 후에 콘텐츠 컨트롤 자체가 사라지기 때문입니다. 양식과 필요한 컨트롤 사이에 INamingContainers가 없는 경우 MasterPage의 ContentPlaceHolders 또는 <form>을 사용할 수 있습니다.
이전의 혁신적인 기술:
TextBox tb = (TextBox)PreviousPage.Master.FindControl("ContentPlaceHolder1").FindControl("TextBox1");
bitmask는 FindControl 방법과 INamingContainers에 대한 설명을 제공합니다.
http://www.odetocode.com/Articles/116.aspx