Я хочу выполнить функцию javascript после asp.net postback без использования ajax.
Я пробовал следующее по моему методу без везения:
Page.ClientScript.RegisterStartupScript(GetType(), "ShowPopup", "showCheckOutPopIn('Livraison',556);");
Я хочу выполнить функцию javascript после asp.net postback без использования ajax.
Я пробовал следующее по моему методу без везения:
Page.ClientScript.RegisterStartupScript(GetType(), "ShowPopup", "showCheckOutPopIn('Livraison',556);");
Вы должны использовать класс ScriptManager, поскольку свойство Page.ClientScript устарело...
Класс ClientScriptManager является новым в ASP.NET 2.0 и заменяет методы класса страницы для управления скриптами, которые теперь устарели.
Ссылка: MSDN - Свойство page.ClientScript
Преимущество ScriptManager заключается в том, что он работает с асинхронными обратными передачами, поэтому, если вы используете AJAX, он не будет работать с ClientScriptManager.
Ваш код будет выглядеть так:
ScriptManager.RegisterStartupScript(this, this.GetType(), "ShowPopup", "showCheckOutPopIn('Livraison',556);", true);
Обратите внимание также, что если вы используете AJAX и имеете кусок кода javascript, который вы хотите выполнить при нескольких обратных передачах, то вы должны ссылаться на свою UpdatePanel в firstargument, например:
ScriptManager.RegisterStartupScript(MainUpdatePanel, typeof(string), "ShowPopup", "showCheckOutPopIn('Livraison',556);", true);
Решение
Мне нужно было добавить теги script, используя следующую перегрузку.
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "script", "alert('Success!');", true);
Я не помню, что такое точный синтаксис/использование для материала page.ClientScript... похоже, что он должен работать небрежно. Но если push наступает, просто используйте простой пользовательский элемент управления, который можно включить/отключить динамически, чтобы выписать метод javascript в блоках script после обратной передачи. Когда страница загружается, этот script выполняет любую функциональность, которую вы хотите выполнить.
конечно, вопрос в том, что этот javascript должен делать, что вы не могли просто сделать на сервере с помощью какого-либо свойства или другого параметра, которые отражались бы в разметке?
У этого человека была такая же проблема, я думаю, и его решение тоже сработало для меня:
http://forums.asp.net/t/1121450.aspx?HOW+TO+run+javascript+on+each+partial+postback+
И решение просто использует функцию класса ScriptManager:
ScriptManager.RegisterStartupScript(this, typeof(Sections), "Initialize", "initialize();", true);
Возможно, поздно, но вы можете так использовать
Мастер-страница:
ScriptManager.RegisterStartupScript(this, typeof(Page),
"ShowRegister", string.Format(@"$( document ).ready(function() {{ShowErrorMessage('{0}');}});", message), true);true);
Веб-форма:
Page.ClientScript.RegisterClientScriptBlock(GetType(), "MEssage",
"$( document ).ready(function() {
ShowMessage('{0}');", true);