ASP.NET получает значение скрытого поля после частичной обратной передачи - PullRequest
1 голос
/ 17 июня 2011

на моей странице ASP.NET у меня есть панель обновления, а в событии updatepanel_Load у меня есть следующий код:

if (!IsPostBack || triggeredRefresh.Value == "1") 
{
   HiddenField hiddenField = new HiddenField();
   hiddenField.ID ="hiddenField1";
   hiddenField.Value = "0";
   placeHolder1.Controls.Add(hiddenField);
} 
else if ( triggeredCheck.Value == "1" )
{
    HiddenField hiddenField = placeHolder1.FindControl("hiddenField1") as HiddenField;
    var x = Convert.ToInt32(hiddenField.Value);
} 

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

Проблема в том, что FindControl возвращает значение NULL, поскольку placeholder1.Controls.Count в данный момент равно 0. Почему это ноль? Я добавил скрытое поле до обратной передачи.

Спасибо за любую помощь

Ответы [ 3 ]

2 голосов
/ 17 июня 2011

Все элементы управления, которые вы добавляете динамически, исчезают при обратной передаче. Поэтому он не существует, когда страница возвращается. Как сказал Layoric, он уничтожается в течение жизненного цикла страницы. Я бы сказал, что если вы можете просто вставить скрытое поле в строку, так как это скрытое поле, и если оно вам не нужно, просто не смотрите на него (в противном случае оно все еще может сидеть).

Имейте в виду, что когда страница ASP.NET «отправляется обратно», она проходит весь жизненный цикл страницы. Это означает, что при первой загрузке страницы она проходит через preinit страницы, init, load, prerender, render и т. Д. Затем, когда она публикуется обратно, она проходит как минимум preinit, init и load (могут быть и другие события). Я не могу вспомнить с головы до головы), прежде чем какие-либо события происходят.

1 голос
/ 27 января 2012

Используйте это HttpContext.Request.Form[hiddenField1.UniqueID].

0 голосов
/ 17 июня 2011

Почему не HttpContext.Request.Form["hiddenField1"] работает?

...