2011-05-26 34 views
1

我想要將表單數據發送到aspx.cs頁面視圖下面的代碼。動作屬性

但是,這個錯誤生成:對象引用未設置爲對象的實例。

請指導我。

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %> 



<!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"> 

    <title></title> 

    </head> 

<body> 

<form id="form1" runat="server" method="post" action="Default2.aspx"> 

<input id="Text1" type="text" value="dgfdh" runat="server" name="Text1"/> 
</form> 
</body> 

</html> 

protected void Page_Load(object sender, EventArgs e) 
{ 
    TextBox1.Text = Request.Form["Text1"].ToString(); 

} 
+0

有你試着列出的Request.Form的內容是什麼? – MajesticRa 2011-05-26 06:05:03

+0

我想訪問Text1.text。 – 2011-05-26 06:07:25

回答

2

當您運行的頁面是第一次,沒有形式,但(在ASPX側的CS部分運行後創建),因此Request.Form沒有領域呢。

由於表單的值只會在提交時發送(例如,當點擊「提交」按鈕時),您應該將您的任務置於一個條件中,以檢查我們是否在提交時已進入該頁面:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (IsPostBack){ 
     TextBox1.Text = Request.Form["Text1"].ToString(); 
    } 

} 
+0

非常感謝@Lea Cohen.My問題解決了。 – 2011-05-26 06:16:45

+0

@Saba,很高興幫助:-)。另見Jon Skeet的回答。他在那裏也有幫助。 – 2011-05-26 06:21:08

1

當您第一次加載頁面時,將不會有任何表單值,因爲沒有任何表單值會從客戶端發送。因此Request.Form["Text1"]將爲空。

也許你應該首先檢查Page.IsPostBack?理想情況下,無論如何,在使用它們之前,您應始終驗證您已獲得所需的所有表單值。

目前尚不清楚爲什麼你在思想上首先調用ToString() - 表達Request.Form["Text1"]已經一個字符串是不是?你就不能使用:

TextBox1.Text = Request.Form["Text1"]; 

你應該檢查一下如果你設置Text屬性雖然空。你總是可以使用空合併運算符來解決這個問題:

TextBox1.Text = Request.Form["Text1"] ?? ""; 
1

當你的設計視圖我沒有看到與ID TextBox1任何控制,所以請首先創建一個控制與以下ID,然後去

TextBox1.Text = Request.Form["Text1"].ToString(); 

,你也可以做到這一點像

protected void Page_Load(object sender, EventArgs e) 
{ 
    TextBox TextBox1=new TextBox(); 

    TextBox1.Text = Request.Form["Text1"].ToString(); 

} 
+0

雖然你說的話看起來不錯,但這不是OP的問題。但是,您可以將其作爲評論發佈。 – 2011-05-26 06:29:23