这里的任何人都有使用Javascript.Net的经验吗?
我正在使用JavaScript.Net在c#中嵌入javascript
我有一个简单的任务来检查我给定的变量是否是一个有效的数组。
通过在脚本中附加变量,我设法得到了正确的答案
此方法有效并返回true
:
JavascriptContext context = new JavascriptContext();
public static string IsValidArray(string vari , JavascriptContext context)
{
object isValid = context.Run(@"
function check(){ var arr = " + vari + ";if(arr.constructor == Array){return true; }else {return false;}} check();");
return (string)isValid;
}
工作正常。但是当我尝试将此变量作为函数的参数传递时,它返回false。 这是代码:
JavascriptContext context = new JavascriptContext();
string array = "['hello','hello2']";
context.SetParameter("arr", array);
string isValid = IsValidArray(context);
public static string IsValidArray(JavascriptContext context)
{
object isValid = context.Run("function check(vari){return (vari.constructor == Array);} check(arr);");
return (string)isValid;
}
如何使用参数进行操作?
答案 0 :(得分:1)
我会详细说明我的评论。
我认为您的问题是您传递的是数组的字符串表示形式,而不是数组。你可以尝试类似context.SetParameter(“arr”,new [] {“hello”,“hello2”));
如果你有一个字符串,并想将它转换为一个对象,我建议使用Json.NET,这简直太棒了。搜索有关如何安装它的教程。然后你可以简单地做:
string json = "['hello','hello2']";
List<String> array = Newtonsoft.Json.JsonConvert.DeserializeObject<List<String>>(json);
替代方案,但是我不太了解JavaScript.Net告诉你什么是可取的,是按原样读取字符串,然后将其传递给JavaScript,知道它只是一个字符串,然后调用{{ 1}}在JavaScript中,以便将其解释为数组,对象或其他任何内容。