输入文本框值不会更改

时间:2014-09-15 13:05:43

标签: c# html asp.net

在我的.aspx页面中,我有一个'输入' 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";

但是现在如果我从浏览器更改此文本框的值,让我们说&#34; Y&#34;,然后单击提交按钮,然后我得到旧值,但不是新值。

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

如何获得更改后的值?

4 个答案:

答案 0 :(得分:4)

确保您只将值设置为&#34; X&#34;当它不是回发时:

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

否则,当点击提交按钮时,Page_Load()事件将更改&#34; Y&#34;回到&#34; X&#34;。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

你不需要所有其他部分,只需这样做

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
 }