1

我在使用 javascript 时遇到问题。

javascript 在 C# winforms 项目中作为字符串动态创建。

实际的 javascript 代码生成良好,所有双引号都按应有的方式转义。当我在这个函数内部分配一个字符串时,我的问题就出现了,例如

string js = "eval(\"var someVar = 'someValue'\");";

所以我最终在浏览器中得到一个字符串

eval(\"var someVar = 'someValue'\");

问题是“\”正在转义“someVar”前面的“。它会自动放入C#中。这使得字符串在尝试在浏览器中执行实际函数时无效。任何想法我可能会怎么做解决这个?

谢谢。

4

2 回答 2

1

如果您使用 .net 4 或更高版本的框架,您可以检查 HttpUtility.JavaScriptStringEncode 方法

于 2013-08-12T12:18:05.727 回答
1

你不应该需要评估。这就是我做你想做的事情的方式。

第 1 步:在您的 aspx 页面上设置一个 Literal 对象。我把文字放在一个隐藏的div中。

<div style="display:none;" id="TheDiv">
   <asp:Literal runat="server" ID="TheLiteral" />
</div>

第 2 步:将文字中的值注入到 C# 代码隐藏文件中。

TheLiteral.Text = SomeValue;
TheLiteral.Text = SomeValue.ToString(); // in case SomeValue is not a string

第 3 步:从客户端获取值:

var SomeVar = $('#TheDiv').text();
$('#TheDiv').remove();

当然,还有其他方法可以做到这一点,但这种方法对我有用。

于 2013-08-12T12:27:58.787 回答