【问题标题】:Get current TextBox Text value in a button onClick event - asp.net在按钮 onClick 事件中获取当前 TextBox 文本值 - asp.net
【发布时间】:2012-11-29 07:04:23
【问题描述】:

我有这样一个页面

<form runat="server" id="NewForm">
    Name: <asp:TextBox ID="Name" runat="server"></asp:TextBox>
    <asp:Button ID="AddNewName" runat="server" Text="Add" OnClick="AddNewName_Click" />
    <asp:Label ID="NewName" runat="server"></asp:Label>
</form>

在后面的代码中,我有一个 Page_Load,它为 TextBox Name 赋值。

protected void Page_Load(object sender, EventArgs e)
{
    Name.Text = "Enter Your Name Here";
}

然后点击 AddNewName 按钮,我会将它写在 Label NewName 中

protected void AddNewDivision_Click(object sender, EventArgs e)
{
    NewName.Text = Name.Text;
}

但是,无论我在名称文本框中输入什么,标签都只显示“在此处输入您的姓名”。它永远不会更新到 Name TextBox 中的实际内容。这段代码我做错了什么?

【问题讨论】:

    标签: asp.net button textbox onclick controls


    【解决方案1】:

    另一个显而易见的问题是:

    <form runat="server" id="NewForm">
        Name: <asp:TextBox ID="Name" runat="server"></asp:TextBox>
        <asp:Button ID="AddNewName" runat="server" Text="Add" **OnClick="AddNewName_Click"** />
        <asp:Label ID="NewName" runat="server"></asp:Label>
    </form>
    

    不是上面的星号。然后,您想知道为什么它没有运行:

    protected void **AddNewDivision_Click**(object sender, EventArgs e)
    {
        NewName.Text = Name.Text;
    }
    

    再次注意星号。您没有调用正确的 void,实际上您可能调用了一个甚至不存在的 void。

    【讨论】:

      【解决方案2】:

      您是re-assigning 的文本,每次Page_Load 覆盖您在到达AddNewDivision_Click 事件之前在TextBox 中输入的文本。要在页面加载时分配一次并且不覆盖后续调用,您可以使用 Page.IsPostBack 属性。

        if(!Page.IsPostBack)
            Name.Text = "Enter Your Name Here";
      

      或者您可以在设计html和remove中分配文本statement来自page_load

      <asp:TextBox ID="Name" runat="server" Text="Enter Your Name Here"></asp:TextBox>
      

      【讨论】:

      • 感谢您的回答阿迪尔!
      • 我希望我能同时选择你的两个答案。但蒂姆是第一个答案,他的答案解决了这个问题。对不起阿迪尔。但我也投了你的票。
      • 你真好@TheJinStudio。完全没问题,谢谢关心。
      【解决方案3】:

      问题是您总是覆盖Page_Load 中更改的值。相反,请检查 IsPostBack 属性:

      protected void Page_Load(object sender, EventArgs e)
      {
          if(!IsPostBack)
              Name.Text = "Enter Your Name Here";
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-21
        • 1970-01-01
        相关资源
        最近更新 更多