Javascript 将对象数组传递给母版页';s内容页

Javascript 将对象数组传递给母版页';s内容页,javascript,c#,asp.net,webforms,Javascript,C#,Asp.net,Webforms,我有一个对象数组,从一个文本文件中加载到服务器端的C#代码中,我正试图将这个数组传递到一个内容页。当我没有使用母版页时,它可以正常工作,但一旦我添加了母版页,它就不再工作了 以下是aspx.cs页面: // Convert list of objects to a json array string jsonString = JsonConvert.SerializeObject(clownIncidents); cs.RegisterArrayDeclaration("markers",

我有一个对象数组,从一个文本文件中加载到服务器端的C#代码中,我正试图将这个数组传递到一个内容页。当我没有使用母版页时,它可以正常工作,但一旦我添加了母版页,它就不再工作了

以下是aspx.cs页面:

 // Convert list of objects to a json array
 string jsonString = JsonConvert.SerializeObject(clownIncidents);
 cs.RegisterArrayDeclaration("markers", jsonString);
当我试图在内容页上访问它时,它会说标记未定义:

<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder1" 
    Runat="Server">    
    <div id="map" ></div>  
    <script src ="jss/Maps.js"></script>
    <script src="https://maps.googleapis.com/maps/api/js?
    key=MYKEYcallback=initMap"></script>  
</asp:Content>

这是因为从cs.RegisterArrayDeclaration(“markers”,jsonString)生成的JavaScript代码显示在内容页中脚本之后的HTML中。因此,当脚本运行时,变量
markers
尚未定义

要解决这个问题,您需要在母版页中添加一个新的
,它必须位于
元素之后,并使用该ContentPlaceHolder来创建JavaScript

例如,您的母版页将是:

<form runat="server">
<%-- Here is your Master page --%>
</form>
<asp:ContentPlaceHolder ID="ScriptContentPlaceHolder" runat="server">
</asp:ContentPlaceHolder>

然后,在.aspx内容页面中,您可以使用如下脚本(在.aspx页面末尾添加以下代码片段):


<form runat="server">
<%-- Here is your Master page --%>
</form>
<asp:ContentPlaceHolder ID="ScriptContentPlaceHolder" runat="server">
</asp:ContentPlaceHolder>
<asp:Content ID="Content2" ContentPlaceHolderID="ScriptContentPlaceHolder" runat="server">
    <div id="map" ></div>  
    <script src ="jss/Maps.js"></script>
    <script src="https://maps.googleapis.com/maps/api/js?
    key=MYKEYcallback=initMap"></script> 
</asp:Content>