javascript - JavaScript block 中的服务器控件

标签 javascript asp.net webforms

我正在尝试将数据库中的项目列表呈现为 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/

相关文章:

javascript - 如何使用 C# 代码添加 Html Audio 元素

javascript - 计算 2 个数组中出现了多少个相同的元素

javascript - 如何通过分析功能跟踪 Ajax 操作

javascript - 使用express.js 打破程序流程

c# - 最后一个操作事件在返回单击时被触发

asp.net - 如何将 2 个日历彼此相邻而不是彼此放置?

c# - 如何开始使用 DotNetOpenAuth

javascript - Scrollspy - 将导航栏页面链接到外部网址时页面困惑

c# - 我可以将 SimpleMembership 类加载到 EntityFramework 中吗?

c# - 使用 AllowMultiple=true 维护 FileUpload 中选定文件的顺序