2017-04-09 103 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> 
相關問題