我有一个对象数组,这些对象是从文本文件中的 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);
}
最佳答案
这是因为从 cs.RegisterArrayDeclaration("markers", jsonString);
生成的 JavaScript 代码出现在内容页面中脚本之后的 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>
关于javascript - 将对象数组传递到母版页的内容页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43307742/