2012-11-03 103 views
2

我只是想跨頁面發佈的例子。 我已加入1個文本框& 1按鈕Default.aspx頁跨頁面發佈

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
<asp:Button ID="Button2" runat="server" Text="Button" PostBackUrl="~/About.aspx"/> 

我已經添加以下代碼以代碼隱藏about.aspx頁

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Page.PreviousPage != null) 
     { 
      TextBox SourceTextBox = 
       (TextBox)Page.PreviousPage.FindControl("TextBox1"); 
      if (SourceTextBox != null) 
      { 
       Label1.Text = SourceTextBox.Text; 
      } 
      else 
       Label1.Text = "no value"; 
     } 
     else 
      Label1.Text = "no value from previous page"; 
    } 

的文件時,我進入在TextBox1中一些文本&點擊按鈕,它轉到about.aspx,但標籤顯示值「沒有值」,它不顯示textbox1的文本值,爲什麼這不能正常工作?

+0

我剛纔提出的正是這種例子,它的作品!所以也許你使用和一個母版頁! ? – Aristos

+0

@Aristos:是的,我已經添加了母版頁Site.master –

+0

這就是爲什麼,PreviousPage是母版頁,那裏你必須找到內容,然後控制。 – Aristos

回答

3

如果你有母版頁則代碼Page.PreviousPage.FindControl("TextBox1");無法工作,因爲TextBox1是下ContentPlaceHolder.,必須首先找到ContentPlaceHolder.然後找到TextBox1

但有得到的值作爲最簡單的方法:

將這個前一頁:

public string TextFromBox1 
{ 
    get 
    { 
     return TextBox1.Text; 
    } 
} 

和重定向網頁上聲明什麼是對的aspx前面的頁面:

<%@ Reference Page ="~/PreviousPageName.aspx" %> 

並在後面的代碼獲取的價值爲:

if (Page.PreviousPage != null) 
{ 
    if (Page.PreviousPage is PreviousPageClassName) 
    { 
     Label1.Text = ((PreviousPageClassName)Page.PreviousPage).TextFromBox1; 
    } 
    else 
    { 
     Label1.Text = "no value"; 
    } 
} 
else 
    Label1.Text = "no value from previous page"; 
+0

我測試和工作。如果沒有母版頁,您的代碼就可以正常工作,但使用母版頁就是這種情況。 – Aristos