将 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 的最佳方法

通过 Ajax 将 Javascript 日期转换为 C#

将 c# 正则表达式转换为 javascript 正则表达式

如何使用 JavaScript 将非英文字符转换为英文

Razor 将C#对象转换成Javascript对象, json还原被转码的字符 &quot·· HTML转义符

C# 中 将IP字符串转换为整型