输入文本框值不变
本文关键字:文本 输入 | 更新日期: 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
}