TextBox.AutoPostBack = "true" блокирует обработчик Button_Click

IgPro
Дата: 27.04.2007 20:42:33
В поиске ничего не нашлось, поэтому пишу:

Условия (неизменные). Грубо:
есть две .aspx страницы, на каждой есть
1. TextBox
2. Button
3. ссылки на страницу 1 и страницу 2

Задача:
реализовать сохранность текста, введенного в TextBox при переходе по ссылкам. И чтобы, понятное дело, без дополнительных кнопок вроде "страничка, не теряй введенный текст - очень прошу"

Для схватывания текста перед перезагрузкой страницы, выставил было TextBox.AutoPostBack = "true", настроил обработчик TextBox_TextChanged. Все заработало, пока я не попробовал нажать Button. Обработчик Button_Click срабатывал (после изменения текста в TetxBox) со второго нажатия.

Т.е. получается, что если я кнопкой инициировал запрос на сервер, а сервер увидел, что в запросе есть инфа об AutoPostBack от TextBox, то на кнопку он забивает и Button_Click не вызывается.

Почему так коряво работает AutoPostBack?
Или можно решить проблему другими методами?
a_web
Дата: 28.04.2007 10:19:00
В поиске ничего не нашлось, поэтому пишу:

Условия (неизменные). Грубо:
есть две .aspx страницы, на каждой есть
1. TextBox
2. Button
3. ссылки на страницу 1 и страницу 2

Задача:
реализовать сохранность текста, введенного в TextBox при переходе по ссылкам. И чтобы, понятное дело, без дополнительных кнопок вроде "страничка, не теряй введенный текст - очень прошу"

Для схватывания текста перед перезагрузкой страницы, выставил было TextBox.AutoPostBack = "true", настроил обработчик TextBox_TextChanged. Все заработало, пока я не попробовал нажать Button. Обработчик Button_Click срабатывал (после изменения текста в TetxBox) со второго нажатия.

Т.е. получается, что если я кнопкой инициировал запрос на сервер, а сервер увидел, что в запросе есть инфа об AutoPostBack от TextBox, то на кнопку он забивает и Button_Click не вызывается.

Почему так коряво работает AutoPostBack?
Или можно решить проблему другими методами?


а не проще сделать, чтобы при нажатии на кнопку значение из текстбокса сохранялось в сессию, и при загрузке второй страницы другой текстбокс загружал это значение из сессии. Тогда и AutoPostBack можно отключить
IgPro
Дата: 28.04.2007 22:12:40
a_web
В поиске ничего не нашлось, поэтому пишу:

Условия (неизменные). Грубо:
есть две .aspx страницы, на каждой есть
1. TextBox
2. Button
3. ссылки на страницу 1 и страницу 2

Задача:
реализовать сохранность текста, введенного в TextBox при переходе по ссылкам. И чтобы, понятное дело, без дополнительных кнопок вроде "страничка, не теряй введенный текст - очень прошу"

Для схватывания текста перед перезагрузкой страницы, выставил было TextBox.AutoPostBack = "true", настроил обработчик TextBox_TextChanged. Все заработало, пока я не попробовал нажать Button. Обработчик Button_Click срабатывал (после изменения текста в TetxBox) со второго нажатия.

Т.е. получается, что если я кнопкой инициировал запрос на сервер, а сервер увидел, что в запросе есть инфа об AutoPostBack от TextBox, то на кнопку он забивает и Button_Click не вызывается.

Почему так коряво работает AutoPostBack?
Или можно решить проблему другими методами?

а не проще сделать, чтобы при нажатии на кнопку значение из текстбокса сохранялось в сессию, и при загрузке второй страницы другой текстбокс загружал это значение из сессии. Тогда и AutoPostBack можно отключить


Понятно, что в сессию. Только задача стоит
реализовать сохранность текста, введенного в TextBox при переходе по ссылкам. И чтобы, понятное дело, без дополнительных кнопок вроде "страничка, не теряй введенный текст - очень прошу"

Т.е. упомянутая кнопка Button не может использоваться для сохранения в сессию. Более того, она за время работы на страничке может вообще остаться не нажатой. Поэтому текст в сессию должен хвататься в момент перехода по ссылке, либо непосредственно перед этим.

AutoPostBack решает эту задачу, но приносит проблемы для работы Button. Если поменять текст в TextBox, после чего сразу нажать Button, то обработчик Button_Click не вызовется. В этом проблема!
Люди, хэлп!!!
a_web
Дата: 02.05.2007 09:55:00
да, теперь понял в чем проблема. Может стоит попробовать использовать вместо ссылок href кнопку LinkButton?


void LinkButton1_Click(..)
{
  Session["text"] = textBox1.Text;
  Response.Redirect("index.aspx");
}