Javascript和c#之间的编码和解码

时间:2010-09-14 16:32:23

标签: c# javascript encoding

我希望能够在这样的div中将数据发送到Javascript:

<div class="dontDisplay><%= myData %></div>

然而,挑战在于HTML会搞砸。似乎有很多编码和解码方案,但我找不到保证兼容所有可能输入(包括Unicode)的javascript / C#对。

有没有人知道一对已知完全兼容的对象?

由于

2 个答案:

答案 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变量。