Простой способ обновления на стороне клиента JavaScript-переменной массива в ASP.NET обратной передачи Ajax в UpdatePanel и?

StackOverflow https://stackoverflow.com/questions/95005

  •  01-07-2019
  •  | 
  •  

Вопрос

Если я хочу ввести переменную массива с глобальной областью действия в javascript на стороне клиента страницы во время полной обратной передачи страницы, я могу использовать:

this.Page.ClientScript.RegisterArrayDeclaration("WorkCalendar", "\"" + date.ToShortDateString() + "\"");

объявить и заполнить массив javascript на стороне клиента на странице.Красиво и просто.

Но я хочу сделать то же самое с помощью асинхронной обратной передачи из UpdatePanel.

Самое близкое, что я могу придумать на данный момент, - это создать файл .js, который просто содержит объявление var, обновить файл во время асинхронной обратной передачи, а затем использовать ScriptManagerProxy.Scripts.Add чтобы добавить файл .js в глобальную область видимости страницы.

Есть ли что-нибудь проще?я делаю это неправильно?

Это было полезно?

Решение

Вы также можете обновить скрытую метку внутри панели обновления, которая позволяет вам выписывать любой javascript, который вам нравится.Однако я бы предложил использовать веб-сервисы или даже методы страниц для извлечения необходимых вам данных вместо использования панелей обновления.

Пример:Моя метка.Текст = "....";...вложите в это свою логику или вы можете добавить [WebMethod] к любому общедоступному статическому методу страницы и возвращать данные напрямую.

Другие советы

Используйте статический метод System.Web.UI.ScriptManager.Добавьте Startupscript()

Скрипт будет выполняться при всех полных и частичных обратных отправках.

Сэм прав.ScriptManager.RegisterStartupScript - это правильное название функции .Он будет запускаться при всех полных и частичных обновлениях страницы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top