我需要在java脚本中读取dot ner reesources字符串,如下所述。
var resources = @Html.ResourceStrings("Home_General_", Resources.ResourceManager);
以上行将呈现以资源键开头的所有资源(来自Dot net资源文件)" Home_General _"
资源中的一些值类似于"嗨" XYZ"你在那儿"即该字符串包含引号字符。
如果字符串有引号,则上述调用失败。
避免此问题的一种方法是将特殊字符转义为"Hi \"XYZ\" are you there"
我们可以避免这种情况的任何其他方式,因为我不想用大量的转义(\
)字符来污染我的资源字符串。
答案 0 :(得分:3)
当您将其渲染为Javascript字符串文字时,您需要Javascript-escape任何字符串。
您还必须从字符串资源中删除外部引号;应该是文本,而不是半有效的Javascript表达。
答案 1 :(得分:1)
使用这样的代码来检索单个资源字符串:
var resourceXYZ = '@Html.Raw(HttpUtility.JavaScriptStringEncode(Resources.ResourceManager.GetString("Home_General_XYZ")))';
我们执行以下操作:
Resources.ResourceManager.GetString()
获取资源字符串。HttpUtility.JavaScriptStringEncode
以转义JavaScript中的任何特殊字符。Html.Raw()
,以防止Razor对此字符串应用HTML编码。函数Html.ResourceStrings
不是MVC的标准函数。你所在地的某人必须写好。如果您向我们展示此代码,我们可以告诉您如何重写它以返回有效的JavaScript文字。
答案 2 :(得分:0)
您可以使用HttpUtility.JavaScriptStringEncode包裹@Html.ResourcesString(...)
来处理所有转义问题。
var resources = @HttpUtility.JavaScriptStringEncode(Html.ResourceStrings("Home_General_", Resources.ResourceManager));