6

我正在用 C# 编写 ASP.NET 项目。

UpdateUserInfo.aspx 页面由文本框和按钮组成。在 pageLoad() 方法中,我为文本框设置了一些文本,当点击按钮时,我获取文本框的新值并将其写入 DB。

问题是即使我更改了文本框的值 textbox.Text() 方法返回文本框的旧值(“sometext”)并将其写入数据库。

这里的方法:

protected void Page_Load(object sender, EventArgs e)
{
    textbox.text = "sometext";
}

void Btn_Click(Object sender,EventArgs e)
{
    String textbox_text = textbox.text();// this is still equals "somevalue", even I change the textbox value
    writeToDB(textbox_text);
}

那么,如何使文本框最初显示为 somevalue,但是当用户更改此值时,getText 方法返回新更改的值并将其写入 DB?

4

4 回答 4

16
protected void Page_Load(object sender, EventArgs e)
{
   if(!Page.IsPostBack)
    {
       textbox.text = "sometext";
    }
}

回发将文本框文本属性设置回"somevalue"按钮单击时,您只需要像上面那样设置一次值。

回传解释:

在 ASP Web 开发的上下文中,回发是 HTTP POST 的另一个名称。在交互式网页中,表单的内容被发送到服务器以处理一些信息。之后,服务器将新页面发送回浏览器。

这样做是为了验证登录密码、处理在线订单或其他客户端计算机无法自行完成的任务。这不应与浏览器上的按钮执行的刷新或返回操作相混淆。

来源

阅读View State也将有助于理解它们是如何组合在一起的。

于 2012-06-08T11:55:36.270 回答
2

试试这个:

If (!IsPostBack) 
{   
textbox.text = "sometext";
} 
于 2012-06-08T12:01:19.643 回答
1

实际上在页面加载时textbox重新初始化

 protected void Page_Load(object sender, EventArgs e)
    {
       if(!Page.IsPostBack)
        {
           textbox.text = "sometext";
        }
    }
    void Btn_Click(Object sender,EventArgs e)
    {
        String textbox_text = textbox.text;
        writeToDB(textbox_text);
    }
于 2012-06-08T11:57:52.377 回答
1

请检查页面加载事件中的页面回发......

于 2012-06-08T11:59:05.890 回答