Простой способ обновления на стороне клиента JavaScript-переменной массива в ASP.NET обратной передачи Ajax в UpdatePanel и?
-
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 - это правильное название функции .Он будет запускаться при всех полных и частичных обновлениях страницы.