Зарегистрируйте JavaScript внутри пользовательского элемента управления, используя C # - PullRequest
4 голосов
/ 21 января 2011

Я хочу вызвать функцию JavaScript из пользовательского элемента управления, используя C #.Для этого я пытаюсь использовать

ScriptManager.RegisterStartupScript(this, typeof(string), "alertbox", "javascript:ShowPopup('Select a row to rate');", true); 

, но у меня это не работает.Это прекрасно работает на странице.Может кто-нибудь помочь мне, как я могу вызвать функцию javascript во время выполнения, используя C #.

Спасибо,

Ответы [ 5 ]

5 голосов
/ 21 января 2011

Попробуйте это. GetType () вместо typeof (string):

ScriptManager.RegisterStartupScript(this, this.GetType(), "alertbox", "ShowPopup('Select a row to rate');", true); 
4 голосов
/ 21 января 2011

Следующее взято из рабочего кода, показывая, что скрипт зарегистрирован для запуска из асинхронной обратной передачи в UpdatePanel.

ScriptManager.RegisterStartupScript( this.upnl, this.upnl.GetType(), Guid.NewGuid().ToString(), "alert('test');", true );

Если ваш код не выполняется изнутри UpdatePanel, онвсе равно не должно быть typeof(string);Вы должны использовать тип некоторого контейнера (обычно сам элемент управления).

Тип: Тип блока клиентского скрипта.Этот параметр обычно указывается с помощью оператора typeof (C #) или оператора GetType (Visual Basic) для получения типа элемента управления , который регистрирует сценарий.

1 голос
/ 21 января 2011

Я не уверен, что это лучший способ сделать это, но для моих пользовательских элементов управления, использующих javascript, у меня есть свойство public string для пользовательского элемента управления и я зарегистрировал его на странице.

// код sudo

например. UserControl

    {

   public bool CustomBool
   { 
     get
     {
       //logic 
       return value;
     }
    }

    public string Javascript
    {
        get { return "javascript...."; }
    }
  }

на странице

{

    page load()
    {
         if (Usercontrol.CustomBool)
         {
               ScriptManager.RegisterStartupScript(this, typeof(string), "alertbox", UserControl.Javascript, true);
         }
    }
}

Недостатком этого является то, что вы должны помнить, чтобы зарегистрировать сценарии на странице. это работает, хотя

0 голосов
/ 21 января 2011

Я считаю, что данная строка встраивается буквально, поэтому необходимо заключить ее в подходящие <script type='text/javascript' language='javascript'> и </script>

0 голосов
/ 21 января 2011

Попробуйте это без "javascript:" в строке сценария:

ScriptManager.RegisterStartupScript(this, typeof(string), "alertbox",  "ShowPopup('Select a row to rate');", true); 
...