У меня есть компонент, который определяет значение в событии обратной передачи.

protected void Button_Click(object s, EventArgs e)
{
   HiddenField.Value = 5;
}

Конечно, значение имеет большее значение, но HiddenField - это элемент управления asp: HiddenField с установленным runat = server. В моем javascript есть:

var id = $("#<%= HiddenField.ClientID %>").val();

Код в javascript настроен на запуск только после того, как произошла обратная передача (другое событие клика клиента) с целью передачи значения скрытого поля через QueryString на другой URL-адрес (так как я не могу выполнить перенаправление ответа на обратные передачи и клиент все равно хочет, чтобы он был на другой странице).

Я пробовал добавить:

ScriptManager.RegisterHiddenField(HiddenField, "Value", string.Empty);

В раздел кода! Page.IsPostback, но идентификатор все еще не устанавливается при запуске javascript.

0
SpaceCowboy74 30 Июл 2010 в 01:38

2 ответа

Лучший ответ

Вы можете добавить глобальную переменную js на главную страницу, а затем установить эту переменную вместо скрытого поля.

Page.aspx

<script>
   var id='';
</script>

Page.aspx.cs

protected void btn_Click(object sender, EventArgs e)
{
   ScriptManager.RegisterStartupScript(Page, Page.GetType(), "updateJavaScriptId", "id='5';", true);
}
0
Jemes 18 Авг 2010 в 15:34

Здесь аналогичная проблема. Возможно, вы сможете использовать его, чтобы изменить то, что вы делаете.

Вам нужен такой доступ к идентификатору клиента? Вы должны иметь возможность установить идентификатор для элемента управления без особых проблем, если он не находится в репитере или чем-то еще. Это может упростить то, что вы пытаетесь сделать.

В этом примере они используют getElementById для получения скрытого поля и просто передают идентификатор HiddenField.

0
kniemczak 29 Июл 2010 в 21:52