Почему при сохранении используется начальное значение моего 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....
}