Подтвердить что ты не робот

Код ScriptManager.RegisterStartupScript не работает - почему?

Я использовал такой код в прошлом, чтобы успешно всплывать предупреждающее сообщение на моей веб-странице asp.net. Теперь он не работает. Я не могу понять, почему.

ScriptManager.RegisterStartupScript(this, typeof(Page), UniqueID, 
     "alert('This pops up')", true);

Любые идеи?

4b9b3361

Ответ 1

Сверху моей головы:

  • Используйте GetType() вместо typeof(Page), чтобы привязать script к вашему фактическому классу страницы вместо базового класса,
  • Передайте константу ключа вместо Page.UniqueID, которая не имеет смысла, поскольку она должна использоваться именованными элементами управления,
  • Завершите свой оператор Javascript точкой с запятой,
  • Зарегистрируйте script в фазе PreRender:

protected void Page_PreRender(object sender, EventArgs e)
{
    ScriptManager.RegisterStartupScript(this, GetType(), "YourUniqueScriptKey", 
        "alert('This pops up');", true);
}

Ответ 2

Попробуйте этот код...

ScriptManager.RegisterClientScriptBlock(UpdatePanel1, this.GetType(), "script", "alert('Hi');", true);

Где UpdatePanel1 - id для Updatepanel на вашей странице

Ответ 3

Вы должны поместить идентификатор updatepanel в первый аргумент, если элемент управления, вызывающий script, внутри поля updatepanel else использует ключевое слово 'this' вместо панели обновления, вот код

ScriptManager.RegisterStartupScript(UpdatePanel3, this.GetType(), UpdatePanel3.UniqueID, "showError();", true);

Ответ 4

Я столкнулся с подобной проблемой. Однако эта проблема была вызвана тем, как я создал страницы для ввода запросов. Я поместил все мои .js файлы в качестве последней вещи, которая будет применена к странице, поэтому они находятся в конце моего документа. В .js файлы включены все мои функции. Диспетчер script кажется, что для вызова этой функции ему нужен уже существующий js файл с вызываемой функцией во время загрузки. Надеюсь, это поможет кому-то еще.