2017-04-09 62 views
2

我有一个从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> 

最后这里是JavaScript中的引用内容页面:

function initMap() { 
    alert(markers); 
} 

回答

1

发生这种情况是因为从生成的JavaScript代码在内容页面中的脚本之后,3210将出现在HTML中。所以,当你的脚本运行时,变量markers尚未定义。

为了克服这个问题,您需要在主页面添加一个新的<asp:ContentPlaceHolder>,该页面必须位于<form runat="server">元素之后,并使用该ContentPlaceHolder来获得JavaScript。

例如,您的主页面将是:

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

,然后在.aspx页面的内容,你可以有你这样的脚本(添加下面的代码片段在.aspx页面末尾):

<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> 
相关问题