Sco*_*ord 5 .net asp.net encoding
我想在.NET中呈现一个发往Javascript的字符串,比如说:
<html>
...
<script>
alert('<%= this.MyStringHere %>');
</script>
</html>
Run Code Online (Sandbox Code Playgroud)
我应该如何编码MyStringHere?我需要HttpUtility.HtmlEncode(HttpUtility.JavaScriptStringEncode(unencodedString))还是HttpUtility.JavaScriptStringEncode(unencodedString)足够?或者都错了?
您也可以在答案中提及替代服务器标签<%solutions,但我正在寻找基于代码的解决方案,这个例子有点人为.
Kna*_*ģis 10
您只需编写脚本以供JS使用,无需使用HTML编码进行双重编码.只是HTML编码不起作用,因为它不会编码\n等.
<script>
alert(<%=HttpUtility.JavaScriptStringEncode(this.MyStringHere, true)%>);
alert("<%=HttpUtility.JavaScriptStringEncode(this.MyStringHere, false)%>");
</script>
Run Code Online (Sandbox Code Playgroud)
请注意,JavaScriptStringEncode默认情况下不会添加双引号 - 请参阅官方文档.
如果您安装了服务器端JSON包,您也可以使用它 - 它也适用于数组,字典等.请注意,它还会为字符串添加引号,因此您不必自行添加它们.
您还必须记住,您不能使用<%: text %>语法,因为它执行HTML编码.在MVC Razor视图中,您甚至必须使用显式禁用HTML编码@Html.Raw(Json.Encode(...)).
| 归档时间: |
|
| 查看次数: |
6937 次 |
| 最近记录: |