我正在尝试将数据库中的项目列表呈现为 JSON block ,以便我可以通过 JavaScript 在客户端使用它。我认为最好的方法是使用 Repeater 或 ListView 来呈现我的项目,但我收到“服务器标签格式不正确”错误。
这是我的代码
<asp:ListView runat="server" ID="rptAddresses" ItemPlaceholderID="plcItems">
<LayoutTemplate>
<script type="text/javascript">
var addressConfig = [
<asp:Placeholder ID="plcItems" runat="server"/>
];
</script>
</LayoutTemplate>
<ItemTemplate>
{
'id': '<asp:Literal runat="server" Text="<%# Eval("AddressID") %>" />',
'name':...
我做错了什么?
最佳答案
我不确定您做错了什么,但这可能是您的字面意思。您可以改为这样做:
'id': '<%# Eval("AddressID") %>'
也就是说,还有其他方法可以将数组发送到您的脚本:
ClientScriptManager.RegisterArrayDeclaration内置于框架中。这是从链接页面中获取的示例:
' Define the array name and values.
Dim arrName As String = "MyArray"
Dim arrValue As String = """1"", ""2"", ""text"""
' Get a ClientScriptManager reference from the Page class.
Dim cs As ClientScriptManager = Page.ClientScript
' Register the array with the Page class.
cs.RegisterArrayDeclaration(arrName, arrValue)
这将在您的表单结束之前呈现以下数组:
var MyArray = new Array("1", "2", "text");
就个人而言,我更喜欢使用 JavaScriptSerializer因为您基本上可以自由序列化任何对象:
Protected Function GetArray() As String
Dim exampleList As New List(Of Pair) From {New Pair(7, 4), New Pair("Foo", "Bar")}
Dim serializer As New Script.Serialization.JavaScriptSerializer()
Return serializer.Serialize(exampleDictionay)
End Function
然后您可以将它添加到您喜欢的任何位置的 .aspx 文件中:
var myArray = <%=GetArray()%>;
实际上呈现为数组文字:
var myArray = [{"First":7,"Second":4},{"First":"Foo","Second":"Bar"}];
当然,您也可以完全在 aspx 标记中完成:
<% Dim serializer As New Script.Serialization.JavaScriptSerializer() %>
var array = <%= serializer.Serialize({"look", "at", "this"})%>;
关于javascript - JavaScript block 中的服务器控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33565290/