ASP.NET внедряет JavaScript в пользовательский элемент управления, вложенный в панель обновления - PullRequest
5 голосов
/ 19 ноября 2008

Я пытаюсь загрузить код javascript с помощью пользовательского веб-элемента управления на страницу с помощью метода Page.LoadControl во время асинхронной публикации на панели обновления.

Я попробовал специально разработанные для этого сценария методы менеджера сценариев, но javascript просто не возвращается пользователю.

Чтобы объяснить мой сценарий немного лучше:

На главной странице есть менеджер сценариев, и одна страница загружает пользовательский элемент управления через метод Page.LoadControl во время асинхронной обратной записи. Пользовательский элемент управления внедряет в обработчик событий перед рендерингом javascript. Это вопрос времени, чтобы ввести JS или это просто невозможно?

Ответы [ 5 ]

3 голосов
/ 23 декабря 2009

Если вы не хотите жестко кодировать свой JavaScript , а вместо этого включить его из файла, вызовите ScriptManager.RegisterClientScriptInclude и затем вызовите функцию инициализации в ScriptManager.RegisterStartupScript .

protected void Page_Load(object sender, EventArgs e)
{
   ScriptManager.RegisterClientScriptInclude(
      this, GetType(), "formatterScript", ResolveUrl("~/js/formatter.js"));
   ScriptManager.RegisterStartupScript(
      this, GetType(), "formatTableFunction", "formatTable()", true);
}
3 голосов
/ 02 декабря 2008

Для этого вы можете сделать

string scr;
scr = "<script src='/scripts/myscript.js'></script>"
Page.ClientScript.RegisterStartupScript(GetType(Page), "key", scr, false)

НТН

2 голосов
/ 19 ноября 2008

Вы можете использовать метод RegisterStartupScript класса ScriptManager для добавления исполняемого скрипта:

public partial class WebUserControl : System.Web.UI.UserControl
{          
    protected void Page_PreRender(object sender, EventArgs e)
    {
        ScriptManager.RegisterStartupScript(this, GetType(), ClientID, "alert(1)", true);
    }
}
2 голосов
/ 19 ноября 2008

Вы уже пробовали

Page.ClientScript.RegisterStartUpScript(GetType(Page), "key", <your script here>, addSctiptTags:=true)

Мы делаем это в наших пользовательских элементах управления, и это работает для нас

НТН

1 голос
/ 30 июня 2010

Помещение RegisterStartupScript в событие Page_PreRender может не работать, если ваш элемент управления вложен в модальное всплывающее окно asp.net. Вместо этого поместите его в Page_Load, когда IsPostBack = False.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...