0

这里的任何人都有 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;          
        }

如何使用参数来做到这一点?

4

1 回答 1

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,知道它只是一个字符串,然后调用JSON.parse(theString)JavaScript 以便将其解释为数组、对象或其他任何东西。

于 2016-03-17T11:31:44.437 回答