我希望能够在这样的div中将数据发送到Javascript:
<div class="dontDisplay><%= myData %></div>
然而,挑战在于HTML会搞砸。似乎有很多编码和解码方案,但我找不到保证兼容所有可能输入(包括Unicode)的javascript / C#对。
有没有人知道一对已知完全兼容的对象?
由于
答案 0 :(得分:1)
您最有可能想要使用json。您可以在页面中嵌入一个字符串,使用脚本标记内的json在页面上创建局部变量:
<script> var myJsonVariabe = { propertyNane: "value" }; </script>
您可以使用DataContractJsonSerializer将.net对象序列化为json。
答案 1 :(得分:1)
您似乎只是将一些文本放入HTML文本内容中,正确的方法是纯HTML编码:
<div class="dontDisplay"><%= Server.HTMLEncode(myData) %></div>
或在ASP.NET 4.0中:
<div class="dontDisplay"><%: myData %></div>
如果JavaScript需要提取它,您可以使用DOM方法:
<div id="foo"><%= Server.HTMLEncode(myData) %></div>
<script type="text/javascript">
var myData= document.getElementById('foo').firstChild.data;
</script>
虽然这假设那里只有一个文本节点,但如果myData
是一个空字符串,它将会中断。您可以使用getTextContent
方法检查所有childNodes
是否为文本节点,并将data
添加到一起,或将textContent
与回退用于{{1},从而解决此问题。对于IE,或使用库来做(例如jQuery中的innerText
)。
或者您可以将数据放在属性中:
text()
如果有可用的合适属性(<div id="foo" title="<%= Server.HTMLEncode(myData) %>">...</div>
<script type="text/javascript">
var myData= document.getElementById('foo').title;
</script>
可能不合适)或评论,或者如符文所建议的那样使用JSON直接进入JavaScript变量。