TextBox的文本后面的代码不会改变

jt1*_*123 19 javascript c# asp.net

所以我的网站上有一个文本框:

<asp:TextBox ID="Latitude" runat="server" ClientIDMode="Static" ></asp:TextBox>
Run Code Online (Sandbox Code Playgroud)

并在页面加载时我用数据库中的东西填充该文本框:

protected void Page_Load(object sender, EventArgs e)
{
    Latitude.Text = thisPlace.Latitude;
}
Run Code Online (Sandbox Code Playgroud)

但是当我想在该文本框中使用新值更新我的数据库时,它仍然使用页面加载中的数据库更新数据库:

protected void Save_Click(object sender, EventArgs e)
{
    setCoordinates(Latitude.Text);
}
Run Code Online (Sandbox Code Playgroud)

这是正常的吗?我怎样才能确保我在setCoordinates()中从文本框中获取新值,而不是使用Latitude.Text = thisPlace.Latitude从文本框中获取的值.?

Jaz*_*ngo 31

我认为这是因为PostBack

如果您正在调用setCoordinates()某个按钮的单击事件文本框,则新值将丢失.如果这是正确的改变Page_Load就像这个

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        Latitude.Text = thisPlace.Latitude;
    }    
}
Run Code Online (Sandbox Code Playgroud)


小智 9

这是因为Page_Load事件发生在setCoordinates调用方法之前.这意味着Latitude.Text值与之前相同.

您应该更改加载函数,以便它不总是设置文本框的初始值.

通过更改page_load事件!Page.IsPostBack,只有给出初始值的唯一时间,才是页面首次加载.

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack) 
    {
        Latitude.Text = thisPlace.Latitude;
    }
}
Run Code Online (Sandbox Code Playgroud)


Pas*_*ash 5

Page_Load每次加载页面时执行.添加IsPostBack检查仅在第一页加载时重置文本:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Latitude.Text = thisPlace.Latitude;
    }
}
Run Code Online (Sandbox Code Playgroud)