以下是我的代码的一部分:
//adding parameters with value
cmd.Parameters.AddWithValue("@Username", d.Text);
cmd.Parameters.AddWithValue("@Password", e.Text);
这是相关的.aspx代码
<tr align= "center"><td class="style1">Username :
<asp:TextBox ID="d" runat="server"></asp:TextBox>
</td></tr>
<tr align ="center"><td class="style3">Password :
<asp:TextBox ID="e" TextMode="password" runat="server"></asp:TextBox>
</td></tr>
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?)
我不明白为什么。
答案 0 :(得分:6)
我猜您的事件处理程序和控件名称是相同的。
将控件的名称更改为例如eTextBox
,它会起作用。同时将事件处理程序中的引用更改为eTextBox.Text
。
另一种可能性是使用this
关键字:
private void Button1_Click(object sender, EventArgs e)
{
// use this.
string s = this.e.Text;
}
答案 1 :(得分:5)
我怀疑:
cmd.Parameters.AddWithValue("@Username", d.Text);
cmd.Parameters.AddWithValue("@Password", e.Text);
包含在以EventArgs e
作为参数的事件中。
事件args具有范围而不是文本框
将您的文本框称为其他内容。给你的控件提供如此模糊的名字是不好的做法
答案 2 :(得分:3)
您几乎肯定已经在方法中覆盖了文本框变量,该方法具有EventArgs e
作为方法签名。使用this
来限定您希望类变量e
,或者更好的是,为您的TextBox
提供一个不错的名称并完全避免此问题。
void SomeBtn_Click(Object sender,
EventArgs e)
{
// Other code ....
cmd.Parameters.AddWithValue("@Password", this.e.Text);
}