Проблема очистки скрытых полей панели обновления частичной обратной передачи ASP.NET - PullRequest
0 голосов
/ 16 июня 2011

У меня есть UpdatePanel, и в моей updatepanel_Load у меня есть некоторый код, который выглядит следующим образом:

if (!IsPostBack || triggeredRefresh.Value == "1") 
{
create hidden fields and add to list using
itemFields.Add(newField);
} 
else if ( triggeredCheck.Value == "1" )
{
lookup field values
}

Список объявляется на уровне класса с использованием: List itemFields = new List ();

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

Спасибо

1 Ответ

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

Поля уровня класса не сохраняются между обратными передачами. Используйте коллекцию состояний сеанса для сохранения значений. Для сохраняющихся элементов управления вы можете использовать <asp:PlaceHolder />.

EDIT:

Если вы используете HiddenField, чтобы просто сохранить одно значение и получить доступ со стороны сервера, и если к нему нет доступа из клиентского скрипта, вы можете сделать что-то подобное.

Удалить список классов.

if (!IsPostBack || triggeredRefresh.Value == "1") 
{
    Session["someValueKey"] = 0;
} 
else if ( triggeredCheck.Value == "1" )
{
    var x = Convert.ToInt32(Session["someValueKey"]);
}

если вам нужен список значений, тогда вы можете сделать

if (!IsPostBack || triggeredRefresh.Value == "1") 
{
    Session["someValueKey"] = new List<int>{100,200};
} 
else if ( triggeredCheck.Value == "1" )
{
    var x = Session["someValueKey"] as List<int>();
}

если вам нужно, чтобы он был элементом управления (для доступа из клиентского скрипта), вы можете сделать

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);
}
...