.Text在.aspx.cs文件中不起作用

时间:2014-06-10 08:08:58

标签: c# asp.net

以下是我的代码的一部分:

//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?)

我不明白为什么。

3 个答案:

答案 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);
 }