将 C# 字符串转换为 JavaScript 字符串
Posted
技术标签:
【中文标题】将 C# 字符串转换为 JavaScript 字符串【英文标题】:Convert C# string to JavaScript String 【发布时间】:2015-02-18 21:49:18 【问题描述】:有人知道在 Asp.net 中的方法吗?我的代码如下所示:
<script>
@string thing = "Cats";
var thing = String(@thing);
</script>
</div>
<body onload="eventAlert(thing)"></body>
【问题讨论】:
我认为您正在寻找的是一种从服务器端(代码隐藏)到客户端(javascript)获取字符串值的方法。对吗? eventAlert(thing) 函数只是将字符串显示为警报,但上面的代码什么也不做,除非我手动传入字符串。 这个字符串在你的c#代码隐藏中保存/生成? 【参考方案1】:您需要在写出字符串之前对其进行 JavaScript 编码,否则您的字符串可能包含导致 JavaScript 字符串常量过早终止的字符。您可以使用 System.Web 命名空间中的HttpUtility.JavaScriptStringEncode 来执行此操作。完成此操作后,您需要停止 razor 对结果进行 html 编码,这可以使用 HtmlHelper.Raw 完成,如下所示:
@string thing = "Cats Special Chars \"!'£$%^&*()@;:";
var thing = "@Html.Raw(HttpUtility.JavaScriptStringEncode(thing))";
【讨论】:
所以这很整洁。根据您的用例,仅注入"@myString"
可能更实用,但是您可以使用 @HttpUtility.JavaScriptStringEncode(value: "hi", addDoubleQuotes: true)
并让该方法输出一个添加或不添加双引号的字符串。【参考方案2】:
尝试以下方法:
var thing = "@(thing)";
【讨论】:
这就是你的做法。有时为了确保剃须刀引擎不会混淆,使用var thing = "@(thing)";
也很有用。
在你的字符串中有引号之前工作得很好。【参考方案3】:
有几个很好的方法可以做到这一点。但是一个非常干净的方法是使用 cookie。这是干净的,因为您没有将 javascript 代码从服务器注入到静态客户端代码中。编写 C# 来创建 JavaScript,然后将其插入到变量中可能存在时间问题,具体取决于您的代码何时运行以及 .Net 正在做什么。出于安全考虑,在读回字符串时要非常小心。
【讨论】:
以上是关于将 C# 字符串转换为 JavaScript 字符串的主要内容,如果未能解决你的问题,请参考以下文章
在 C# 中将 (Javascript)TypedArray 字符串转换为 byteArray 的最佳方法
将 c# 正则表达式转换为 javascript 正则表达式