JavaScript块内部的服务器控件
Server Controls Inside a JavaScript Block
我试图将数据库中的项目列表呈现为JSON块,这样我就可以通过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"})%>;
在对所有单引号和双引号的组合进行了大量调整之后,我最终通过将<script>
标记放入文本中来解决这个问题。即:
<LayoutTemplate>
<asp:Literal runat="server" Text='<script type="text/javascript">' />
var macroConfig = [
<asp:Placeholder ID="plcItems" runat="server"/>
];
$(document).ready(function () {
...
});
<asp:Literal runat="server" Text='</script>' />
</LayoutTemplate>
解析器似乎混淆了script
标记的结束位置和服务器控制标记的开始位置。
相关文章:
- 创建服务器控件.创建问题
- LoadControl HttpCompileException自定义服务器控件JavaScript错误
- 使用javascript ASP.NET获取服务器控件上的子控件
- 将呈现将 JavaScript 作为 ASP 服务器控件运行
- 突出显示焦点上的文本框服务器控件
- 需要在加载时访问 java 脚本中的 asp.net 服务器控件
- 如何在 JavaScript 中访问和设置服务器控件的值
- 在服务器控件中分离 Javascript
- 如何将Ajax选项卡控件内部的文本框读取为javascript函数
- 创建 Web 服务器控件以模拟 jquery 自动完成 API
- 通过 Java 脚本获取服务器控件属性值
- 服务器标记格式不正确-使用JQuery创建带有服务器控件的表
- 如何从客户端显示用户控件内部的devexpress弹出控件
- 如果按下了specvic服务器控件,则在回发时执行javascript
- 如何在 html 元素中呈现服务器控件客户端 ID
- JavaScript块内部的服务器控件
- 与控件ID关联的访问服务器控件
- 在asp服务器控件中使用javascript . preventdefault()
- ASP.. NET服务器控件-基于下拉选择显示隐藏文本框
- ASP.. NET服务器控件-基于下拉选择显示隐藏文本框