使用C#在用户控件中注册javascript

时间:2011-01-21 14:52:03

标签: c# javascript asp.net user-controls scriptmanager

我想使用C#从User Control调用javascript函数。为此,我正在尝试使用

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

但它不适合我。这在页面上工作正常。有人可以帮助我如何使用C#在运行时调用javascript函数。

谢谢,

5 个答案:

答案 0 :(得分:5)

尝试this.GetType()而不是typeof(string):

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

答案 1 :(得分:4)

以下内容来自工作代码,显示正在注册的脚本来自UpdatePanel中的异步回发。

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

如果您的代码未在UpdatePanel内执行,则代码仍然不应为typeof(string);你应该使用某种容器的类型(通常是控件本身)。

  

类型:客户端脚本块的类型。这个参数是   通常使用typeof指定   运算符(C#)或GetType运算符   (Visual Basic)检索类型   正在注册的控件   脚本。

答案 2 :(得分:1)

我不确定这是否是最好的方法,但对于使用javascript的用户控件我在用户控件上有一个公共字符串属性并在页面中注册它。

// sudo code

例如。 用户控件

    {

   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);
         }
    }
}

这样做的缺点是你必须记住在页面上注册脚本。它确实有效

答案 3 :(得分:0)

在脚本字符串中没有“javascript:”的情况下尝试:

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

答案 4 :(得分:0)

我发现给定的字符串是按字面意思嵌入的,因此有必要将其括在适合的<script type='text/javascript' language='javascript'></script>