元素的值不变

时间:2019-04-17 14:10:10

标签: c# asp.net webforms

我有以下代码:

asp.net代码

..
<input type="text" class="form-control" placeholder="some text" aria-label="note" id="note" aria-describedby="basic-addon3" runat="server">
..

c#代码

protected void Page_Load(object sender, EventArgs e)
{
    note.Value = "some other text";
}

private void ButtonSave_Click(object sender, EventArgs e)
{
    SaveValue(note.Value);
}

如果我点击了调用SaveValue-Function的按钮,它将始终保存我之前在Page_Load上设置的值,而不是我在Page本身上输入的值。

要获取在输入字段中设置的实际值,我该怎么办?

1 个答案:

答案 0 :(得分:3)

只需稍微更改代码

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        note.Value = "some other text";
    }
}

在ASP.NET中,有一个称为页面生命周期的东西。当您在页面上执行某些操作导致回发(例如单击Button控件)时,页面将向同一URL发送HTTP POST请求。发生这种情况时,页面的IsPostBack属性将设置为true。无论何时通过第一个请求或随后的回发加载页面,在调用任何按钮单击事件处理程序之前,都会触发Page_Load事件。

这意味着您在达到按钮单击处理程序之前正在重置note的值。为防止这种情况,您的Page_Load事件应检查IsPostBack属性,以确保它不会覆盖来自用户的值。

有关更多详细信息,请参见此tutorial