Javascript 和 C# 之间的编码和解码
我希望能够将数据发送到这样的 div 中的 Javascript:
<div class="dontDisplay><%= myData %></div>
然而,挑战是 HTML 会变得混乱。那里似乎有太多的编码和解码方案,但我找不到保证与所有可能的输入(包括 Unicode)兼容的 javascript/C# 对。
有谁知道已知的一对能够完美兼容吗?
谢谢
I want to be able to send data to Javascript in a div like this:
<div class="dontDisplay><%= myData %></div>
However, the challenge is that the HTML will get messed up. There seems to be a plethora of encoding and decoding schemes out there, but I can't find a javascript/C# pair that are guaranteed to be compatible for all possible inputs (including Unicode.)
Does anyone know of a pair that are known to be perfectly compatible?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您似乎只是将一些文本放入 HTML 文本内容中,正确的方法是普通的旧 HTML 编码:
或在 ASP.NET 4.0 中:
如果 JavaScript 需要提取此内容,您可以使用 DOM 方法:
尽管这假设存在其中只有一个文本节点,如果
myData
是空字符串,则会中断。您可以通过使用getTextContent
方法来解决此问题,该方法检查所有childNodes
是否为文本节点并将它们的data
添加在一起,或者使用textContent
对于 IE 可以回退到innerText
,或者使用库来完成此操作(例如 jQuery 中的text()
)。或者,您可以将数据放入属性中:
如果有合适的可用属性(
title
可能不合适)或注释,或者按照 Rune 的建议,使用 JSON 直接放入 JavaScript 变量中。You appear to be just putting some text into HTML text content, for which the correct approach is plain old HTML-encoding:
or in ASP.NET 4.0:
If JavaScript needs to extract this, you can use DOM methods:
although this assumes that there's exactly one text node in there, and will break if
myData
is an empty string. You can work around this by having agetTextContent
method that checks all thechildNodes
for being text nodes and adds theirdata
together, or usetextContent
with fallback toinnerText
for IE, or use a library to do it (eg.text()
in jQuery).alternatively you can put the data in an attribute:
if there is a suitable attribute available (
title
might not be appropriate), or a comment, or directly into a JavaScript variable using JSON as suggested by Rune.您很可能想使用 json。您可以在页面中嵌入一个字符串,该字符串在脚本标记内使用 json 在页面上创建本地变量:
您可以使用 DataContractJsonSerializer。
You most probably want to use json. You can embed a string in your page that creates a local variable on your page using json inside a script-tag:
You can serialize a .net object to json using the DataContractJsonSerializer.