Регистрация скрипта несколько раз - PullRequest
0 голосов
/ 26 мая 2009

В коде ниже я регистрирую скрипт запуска, как показано ниже:

  string strFunctionName = "ShouldAdd";
  sb.Append(strFunctionName + @"((blnShouldAdd ? "true" : "false") + ", true);");

  ScriptManager.RegisterStartupScript(this, this.GetType(), "shouldAdd", sb.ToString(), true);

Этот фрагмент кода вызывается дважды, один раз при загрузке страницы, когда blnShouldAdd оценивается как false, и в обработчике события кнопки, когда blnShouldAdd оценивается как true.

Странно, когда я отлаживаю код и вхожу в JS-функцию ShouldAdd, значение всегда ложно. Я бы предположил, что это правда, так как второй вызов в обработчике событий переопределяет первый.

Есть идеи?

Ответы [ 3 ]

1 голос
/ 26 мая 2009

Причина, по которой вы должны передать сложные параметры this и this.GetType () в функцию RegisterStartupScript(), заключается в том, что данная функция регистрируется только один раз. Таким образом, ваш код выполняется один раз, а не дважды.

1 голос
/ 27 мая 2009

Загрузка страницы также запускается при нажатии кнопки, как часть жизненного цикла страницы asp.net, и выполняется до обработчика события кнопки. Таким образом, когда вы достигаете обработчика события кнопки, вы уже зарегистрировали скрипт в Page Load, поэтому запрос на регистрацию другого скрипта с такой же парой (тип, ключ) игнорируется.

Возможно, вам следует переместить вызов из Page Load на более позднюю точку жизненного цикла pag, может быть, PreRender в лучшее место.

1 голос
/ 26 мая 2009

Я думаю, что вы должны использовать метод IsStartupScriptBlockRegistered() или IsClientScriptBlockRegistered(), чтобы проверить, был ли скрипт уже добавлен и беспокоиться о RegisterStartupScript, только когда он возвращает false.

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