输入文本框值不变

本文关键字:文本 输入 | 更新日期: 2023-09-27 18:21:51

在我的.aspx页面中,我有一个'input'html标记,还有一个asp按钮。

 <input id="Name" type="text" runat="server" clientidmode="Static" />
 <asp:Button Width="100" type="submit" ID="sendOrder" runat="server" OnClick="SubmitForm" Text="Submit" />

在页面加载时,我从代码后面填充输入标签中的值,如下所示:

  Name.Value= "X";

但现在,如果我从浏览器中更改这个文本框的值,比如说"Y",然后单击"提交"按钮,我就会得到旧值,但不会得到新值。

 protected void SubmitForm(object sender, EventArgs e)
    {
    var test= Name.Value; // here I get old value
    }

如何获取更改后的值?

输入文本框值不变

确保仅在不是回发时将值设置为"X":

if (!Page.IsPostBack){
   Name.Value= "X";
}

否则,单击提交按钮时,Page_Load()事件会将值从"Y"更改回"X"。

您需要在Page_Load上使用!IsPostBack,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
    //it's important to use this, otherwise textbox old value overrides again
    if (!IsPostBack)
    {
        Name.Value= "X";
    }
}

建议:

我们可以在asp.net中使用<input></input>控件,但最佳实践是使用<asp:TextBox></asp:TextBox>控件。

以下是示例:HTML

<asp:TextBox ID="Name" runat="server"></asp:TextBox>
<asp:Button Width="100" ID="sendOrder" runat="server" OnClick="SubmitForm"
Text="Submit" />

代码隐藏:

protected void Page_Load(object sender, EventArgs e)
{
    //it's important to use this, otherwise textbox old value overrides again
    if (!IsPostBack)
    {
        Name.Text = "Some Value";
    }
}
protected void SubmitForm(object sender, EventArgs e)
{
    var test = Name.Text; //now get new value here..
}

检查Page_Load中的IsPostback,这样就不会覆盖提交的值!

您不需要所有其他部分,只需执行此即可

protected void Page_Load(object sender, EventArgs e)
  {
    if (!Page.IsPostBack)
    {
         //code to execute here only when an action is taken by the user
         //and not affected by PostBack
    }
    //these codes should be affected by PostBack
 }