ASP.NET Значение скрытого поля, не измененное при обратном вызове

#c# #.net #asp.net #callback #hidden-field

#c# #.net #asp.net #обратный вызов #скрытое поле

Вопрос:

Я изменяю значение asp: HiddenField во время обратного вызова.

 <asp:HiddenField runat="server" ID="hiddenField" Value="old value" />

private void Page_Load(object sender, EventArgs e)
{
   if (IsCallBack)
   {
      hiddenField.Value = "new value";
   }
}
  

но после обратного вызова значение скрытого поля равно «старому значению». При отладке я вижу, что значение скрытого поля равно «новому значению». Я хотел бы знать, почему оно сохраняет исходное значение. Спасибо.

Комментарии:

1. Вы имеете в виду IsPostBack ? UpdatePanels Задействованы?

2. Это так, IsCallBack я ни в чем UpdatePanels не замешан.

Ответ №1:

Я думаю, вы пытаетесь изменить значение скрытого поля при асинхронной / частичной обратной публикации, но вашего скрытого поля нет на панели обновления.

Редактировать: Вам нужно поместить ваше скрытое поле на панель обновления.

Комментарии:

1. Да, моего скрытого поля нет внутри панели обновления. Должен ли я поместить его в панель обновления?

2. Спасибо, есть ли какой-либо другой способ вместо использования UpdatePanel?

3. Вам нужно понимать теорию частичной обратной передачи. Значения будут обновлены при асинхронной обратной передаче только тогда, когда они находятся в updatepanel. Если вы действительно хотите обновить значение на стороне сервера, то другого способа нет. Другой способ, если вы не хотите добавлять панель обновления, вы можете сделать это в javascript.

4. Да, я уже думал обновить его с помощью javascript… Я также ищу, как вызывать функции javascript из исходного кода без использования RegisterClientScriptBlock метода и веб-браузера.. (это повлияет на уровень доверия моего проекта). В любом случае, большое вам спасибо! Это полезно 🙂