0

我正在尝试使用谷歌地图,为此我做了一个用户控件,我尝试注册一个JavaScript,但又像往常一样,它没有得到注册,所以我试图注册它后面的代码使用clientscript。但是,同样的问题。它没有被注册。在用户控件中调用javascript

以下代码写在usercontrol的页面加载事件中。

ClientScriptManager script = Page.ClientScript; 

     if (!script.IsStartupScriptRegistered(this.GetType(), "scriptKey")) 
     { 
      StringBuilder sb = new StringBuilder(); 
      sb.AppendLine("function initialize() {"); 
      sb.AppendLine("var latlng = new google.maps.LatLng(%%LAT%%, %%LONG%%);"); 
      sb.AppendLine("var myOptions = {"); 
      sb.AppendLine("zoom: 8,"); 
      sb.AppendLine("center: latlng,"); 
      sb.AppendLine("mapTypeId: google.maps.MapTypeId.ROADMAP"); 
      sb.AppendLine("};"); 
      sb.AppendLine("var map = new google.maps.Map(document.getElementById(\"\"%%CLIENTID%%\"\"), myOptions);"); 
      sb.AppendLine("}"); 


      sb = sb.Replace("%%CLIENTID%%", this.ClientID); 


      sb = sb.Replace("%%LAT%%", (a1 == null ? 42.006160736084 : a1.latitude).ToString()); 
      sb = sb.Replace("%%LONG%%", (a1 == null ? -93.6386795043945 : a1.longitude).ToString()); 

      script.RegisterStartupScript(this.GetType(), "scriptKey", sb.ToString(), false); 

然后我尝试在aspx页面中使用这个控件。任何帮助,将不胜感激, 谢谢!

回答

2

您忘记了标签。

 StringBuilder sb = new StringBuilder(); 
     sb.AppendLine("<script type=\"text/javascript\"> function initialize() {"); 
     ...... 
     ...... 
     ...... 
     ...... 
     sb = sb.Replace("%%LAT%%", (a1 == null ? 42.006160736084 : a1.latitude).ToString()); 
     sb = sb.Replace("%%LONG%%", (a1 == null ? -93.6386795043945 : a1.longitude).ToString()); 

     sb.Append("</script>"); 
+1

或者,如果他不想添加标签,他可以将script.RegisterStartupScript的最后一个参数更改为true,它会为他添加脚本标签。 – Adrian 2011-01-26 23:20:54

相关问题