7

我有这样一个页面

<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 名称分配了一个值。

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;
}

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

4

3 回答 3

17

问题是你总是覆盖Page_Load. 相反,请检查IsPostBack属性:

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
        Name.Text = "Enter Your Name Here";
}
于 2012-12-11T17:17:13.167 回答
3

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

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

或者您可以分配设计 html 中的文本removestatement来自page_load

<asp:TextBox ID="Name" runat="server" Text="Enter Your Name Here"></asp:TextBox>
于 2012-12-11T17:20:24.037 回答
0

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

<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。

于 2014-12-04T14:01:00.790 回答