C# 如何通过codebehind在传单中添加多个标记

C# 如何通过codebehind在传单中添加多个标记,c#,javascript,asp.net,code-behind,leaflet,C#,Javascript,Asp.net,Code Behind,Leaflet,我想通过codebehind在地图上添加多个传单标记。我的简历如下: public void setMarker(double[] lat, double[] lng) { string script = string.Empty; for (int i = 0; i < lat.Length; i++) { script = string.Format(@"<script language=""Javascript"">

我想通过codebehind在地图上添加多个传单标记。我的简历如下:

public void setMarker(double[] lat, double[] lng)
{
    string script = string.Empty;

    for (int i = 0; i < lat.Length; i++)
    {
        script = string.Format(@"<script language=""Javascript"">
                   addMarker('{0}','{1}')
                    </script>", lat[i], lng[i]);

        Page.ClientScript.RegisterStartupScript(this.GetType(), "onMapClick", script);
    }
}

如果我从鼠标单击事件调用相同的功能,那么每次单击都会添加标记。使用my Function时,如何使所有标记保持在地图上?

客户端脚本通过其键和类型进行唯一标识。具有相同键和类型的脚本被认为是重复的。只能向页面注册一个具有给定类型和密钥对的脚本

在您的情况下,我只需将对函数的所有调用附加到一个脚本块,然后注册一次(在循环之外):

StringBuilder startupScript=新建StringBuilder();
startupScript.Append(@“”);
对于(int i=0;i
  function addMarker(lat, lng)
  {
       var myLatLng = new L.LatLng(lat, lng);
       L.marker(myLatLng, { icon: greenIcon, draggable: true }).addTo(Mymap);
  }
StringBuilder startupScript = new StringBuilder();
startupScript.Append(@"<script language=""Javascript"">");
for (int i = 0; i < lat.Length; i++)
{
    startupScript.AppendFormat(@"addMarker('{0}','{1}'); ", lat[i], lng[i]);
}
startupScript.Append(@"</script>");
Page.ClientScript.RegisterStartupScript(this.GetType(), "onMapClick", startupScript.ToString());