2014-06-10 64 views
2

下面是我的一些代碼部分:。文本不.aspx.cs工作文件

//adding parameters with value cmd.Parameters.AddWithValue("@Username", d.Text); cmd.Parameters.AddWithValue("@Password", e.Text);

下面是相關的.aspx代碼

​​

沒有錯誤消息爲1st .Text命令。但對於第二行有一個錯誤信息:

Error 1 'System.EventArgs' does not contain a definition for 'Text' and no extension method 'Text' accepting a first argument of type 'System.EventArgs' could be found (are you missing a using directive or an assembly reference?) 

我不明白爲什麼。

+1

你的頁面類的'e'成員(由設計者爲文本框添加的一個)被你的事件處理函數的'e'參數所遮蔽(EventArgs '實例)。重命名控件或參數或兩者。 –

+0

總是嘗試爲元素使用更多的聲明式ID名稱,d和e不是那種聲明式的。 tbUserName和tbPassword會好很多。 –

回答

5

我懷疑:

cmd.Parameters.AddWithValue("@Username", d.Text); 
cmd.Parameters.AddWithValue("@Password", e.Text); 

被包含其中有EventArgs e作爲參數的事件中。

事件的args具有範圍,而不是你的文本框

打電話給你的文本別的東西。這是一個很糟糕的做法,給你的控件這樣模棱兩可的名字

6

我想你的事件處理程序和控件名稱是相同的。

將您的控件的名稱更改爲例如eTextBox,它將起作用。還要將事件處理程序中的引用更改爲eTextBox.Text

另一種可能性是使用this關鍵字:

private void Button1_Click(object sender, EventArgs e) 
{ 
    // use this. 
    string s = this.e.Text; 
} 
3

你幾乎一定會在其中具有EventArgs e作爲方法簽名的方法重寫文本框的變量。使用this來限定您希望類變量e或更好,請給您的TextBox一個體面的名稱,並完全避免該問題。

void SomeBtn_Click(Object sender, 
         EventArgs e) 
{ 
     // Other code .... 
     cmd.Parameters.AddWithValue("@Password", this.e.Text); 
}