2012-05-29 42 views
0

我有一個包含文本框和按鈕的頁面。我已對這個按鈕一項PostBackUrl並寫上目的地頁面的加載事件下面的代碼:在aspx頁面中使用PostBackURL時無法獲取值

if (PreviousPage != null) 
     { 
      string name = ((TextBox)PreviousPage.FindControl("TextBox1")).Text; 

      Response.Write(name); 
     } 

在使用調試器,我發現,我收到以下錯誤:

Object reference not set to an instance of an object. 

我不是能夠找出問題出在哪裏,因爲當我將鼠標懸停在PreviousPage上時,我可以看到第一個頁面的名稱,當我看到TextBox1的值時,它顯示的是{System.Web.UI.WebControls.TextBox},而不是我輸入的值!

+0

你正在使用什麼在頁面上傳輸到另一個。 'Server.Transfer'或'Response.Redirect()' –

+0

這兩個都沒有將第一頁上的按鈕控件的PostBackURL屬性設置爲abc.aspx。並將上面的代碼寫入第二頁的加載事件中。 –

+0

好..你正在使用上下文處理程序.. –

回答

0

我現在能夠獲得文本框的值。當使用帶有母版頁的aspx頁面時,我們需要首先獲取contentplaceholder的引用,然後使用該引用來獲取文本框的引用。

ContentPlaceHolder Content1 =(ContentPlaceHolder)PreviousPage.Master.FindControl("MainContent"); 
      TextBox SourceTextBox = 
    (TextBox)Content1.FindControl("TextBox1"); 
     Response.Write(SourceTextBox.Text); 

這將打印textbox.text的值。

0

設置PostBackUrl時,實際上是將表單發送到目標頁面。這意味着你應該能夠訪問使用Request.Form值:

string value = Request.Form["MyTextBoxValue"].ToString(); 

如果窗體的方法是GET,你應該能夠通過QueryString訪問值。

編輯

如果你只是需要將表格提交到另一個頁面,你也可以考慮改變形式action指向目標頁面。然後,您將可以使用Request對象訪問這些值。

+0

我嘗試過使用你的方法,但它不適用於PostBackURL。 –

+0

您是否嘗試過更改表單操作和方法,而不是使用'PostBackUrl'? –

0

您沒有使用代碼獲取文本框的值的原因是因爲您沒有在.Text之後使用.ToString()。它需要是:

if (PreviousPage != null) 
    { 
     string name = ((TextBox)PreviousPage.FindControl("TextBox1")).Text.ToString(); 

     Response.Write(name); 
    } 

試試看看它是否有效!

相關問題