在我的.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
}
如何获得更改后的值?
答案 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
}