有以下兩個頁面Default.aspx和Result.aspx,程式碼如下:
<!-- 預設.aspx -->
<%@ 頁面語言="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="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="~/Result.aspx" /></asp:Content>
//Default.aspx.cs
使用系統;
使用系統數據;
使用系統配置;
使用系統.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 -->
<%@ 頁面語言="C#" MasterPageFile="~/Default.master" AutoEventWireup="true" CodeFile="Result.aspx.cs" Inherits="結果" Title="無標題頁面" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="伺服器">
<asp:Label ID="Label1" runat="server" Text="您在前一頁輸入的字串是"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</asp:內容>
//結果.aspx.cs
使用系統;
使用系統數據;
使用系統配置;
使用系統集合;
使用系統.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兩個。 PostBackUrl指向Result.aspx
。 “文字框1”);
tb的值為null
。
如果(con == null)
返回;
TextBox tb = (TextBox)con.FindControl("TextBox1");
但是
con的值為null,這樣後續的語句也不可能執行了。
找到了答案,以下引用的是位元遮罩的說法:
……因為母版頁重新排列頁面後,內容控製本身就會消失。如果表單和您需要的控制項之間沒有 INamingContainers,則可以使用 ContentPlaceHolders 或 MasterPage 上的 <form>。
所以以上的程式碼應該要改成:
TextBox tb = (TextBox)PreviousPage.Master.FindControl("ContentPlaceHolder1").FindControl("TextBox1");
bitmask也在他的部落格上寫了一篇文章來闡述FindControl方法和INamingContainers介面:
http://www.odetocode.com/Articles/116.aspx