2012-02-16 4 views
0

У меня есть пользовательский элемент управления ASP.NET, который я хочу написать динамический Javascript (в основном вызов JQuery для открытия узла аккордеона).ASP.NET, ScriptManager, History Points и Dynamic Javascript

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

У меня есть часть, которая устанавливает рабочие точки истории, и я могу выполнить свой код (ниже), когда я перемещаюсь по истории. Проблема заключается в том, что в этом примере мой скрипт никогда не отображается на странице.

protected void uxScriptManager_OnNavigate(Object sender, HistoryEventArgs e) 
    { 
     if(!String.IsNullOrEmpty(e.State["activeTab"])) 
     { 
      ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "xScript", "alert('Hello,world!');", true); 
     } 
    } 

Я делаю что-то неправильно?

Добавление

Я мастерить, и кажется, что мой призыв зарегистрировать clientscriptblock штраф в других случаях работает ... но в случае Navigate для ScriptManager, я не могу писать новый сценарий на странице. Я имею в виду то, что я пытаюсь сделать, это не возможно ...

+0

Вопрос аналогичен http://stackoverflow.com/questions/9278466/html-elements-hiding-after-asp-button-click –

ответ

0

Похоже, что вам нужно добавить скрипт вызова ScriptManager.RegisterStartupScript метод, чтобы показать элементы на странице:

ScriptManager.RegisterStartupScript (это, this.GetType(), this.ID, "" предупреждение ('Привет, мир!');», правда);

+0

Привет, Иван. Я пробовал это - но то, что, похоже, происходит в событии Navigate, я не могу добавить на страницу новые блоки скриптов. Я думаю, это потому, что страница читается из истории, а не полностью перерисована. Службы на стороне сервера работают нормально, но в этом конкретном случае мне нужно подключить сценарий на стороне клиента, и это не похоже на то, что это возможно. (Если я переведу тот же блок кода для скрипта на другое событие, он отлично работает) – Tim

1

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

CORRECTION

я узнал, что это является можно делать то, что я хочу!

  • мне нужно, чтобы установить точку истории в начале жизненного цикла страницы
  • мне нужно, чтобы установить динамический сценарий в методе RegisterStartupScript для страницы,

(пост Ивана заостренных я в правильном направлении, поэтому я отметил свой пост как ответ)

Смежные вопросы