Почему при сохранении используется начальное значение моего TextBox, а не введенное значение?

У меня есть текстовое поле на моем сайте:

<asp:TextBox ID="Latitude" runat="server" ClientIDMode="Static" ></asp:TextBox>

При загрузке страницы я заполняю это текстовое поле чем-то из базы данных:

protected void Page_Load(object sender, EventArgs e)
{
    Latitude.Text = thisPlace.Latitude;
}

Когда я хочу обновить мою базу данных новым значением в этом текстовом поле, она все равно обновила базу данных, введенную при загрузке страницы:

protected void Save_Click(object sender, EventArgs e)
{
    setCoordinates(Latitude.Text);
}

Как я могу убедиться, что setCoordinates() извлекает новое значение из текстового поля, а не исходное значение из базы данных из Latitude.Text = thisPlace.Latitude; ?

Ответы

Ответ 1

Я думаю, потому что PostBack

Если вы вызываете setCoordinates() в каком-либо текстовом поле события нажатия кнопки, новое значение будет потеряно. Если это право измените Page_Load как этот

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

Ответ 2

Это происходит потому, что событие Page_Load происходит до вызова метода setCoordinates. Это означает, что значение Latitude.Text совпадает с предыдущим.

Вы должны изменить функцию загрузки, чтобы она не всегда устанавливала начальное значение текстового поля.

Изменив событие page_load на !Page.IsPostBack, единственный раз, когда задано начальное значение, это первый раз, когда загружается страница.

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

Ответ 3

Page_Load выполняется каждый раз, когда загружается страница. Добавить IsPostBack проверить на reset текст только при загрузке первой страницы:

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

Ответ 4

Проверьте, находится ли страница в обратной передаче, иначе значение будет заменено до сохранения

If(!IsPostBack){
    Latitude.Text = thisPlace.Latitude;
}

Ответ 5

Вам нужно получить информацию из запроса, а не использовать следующее свойство:

var theValue = this.Context.Request[this.myTextBox.ClientID];

Ответ 6

Это происходит, если вы загружаете начальные значения заново.

if (!IsPostBack)
{
    //call the function to load initial data into controls....
}