2016-03-10 8 views
0

Я хочу запустить Javascript внутри C# и передать переменные между C# и Javascript.Передача переменных в Javascript с использованием ClearScript

Кажется, что ClearScript - это стабильный способ для этого.

У меня есть функция JavaScript, которая выглядит примерно так:

var b = a[0]; 
var c = a[1]; 
var d = a[2]; 
var e = a[3]; 
rtnstr = "{errmsg: 'calculation never ran'}"; 

calculation() 

function calculation() { 
    rtnstr = "{ one:'" + a+b "', " two:'" + c+d + "'}"; 
} 

Как я могу назвать, что в ClearScript переходящий в a массиве и извлечение назад rtnstr строки.

Я нашел этот URL: https://clearscript.codeplex.com, в котором показано, как получить массив целых чисел; Мне нужно, чтобы получить одну строку.

Мне также нужно знать, как передавать переменные; пример этого не показывает.

ответ

0

Обратите внимание, что я не работал над этим и пытаюсь подключить точки, используя документацию.

using Microsoft.ClearScript.V8; 

public static void Main(string[] args) 
{ 
    var engine = new V8ScriptEngine(); 
    engine.AddHostObject("a", args); // it looks like a is the name of the variable that wil be used by script to refer to host object which is args in this case 

    engine.Execute(".... your javascript code ...."); 
    var returnStr = engine.Script.rtnstr; 
} 
0

Я не знаю, нуждаетесь ли вы в этом, но я наткнулся на ваш вопрос и дал ему шанс.

Сначала добавьте файл JS в решение:

Add a javascript file to your solution.

Затем добавить JavaScript в файла JavaScript:

var myArray = [0,1,2,3]; 
var a = myArray[0]; 
var b = myArray[1]; 
var c = myArray[2]; 
var d = myArray[3]; 
var rtnstr = "{errmsg: 'calculation never ran'}"; 

function calculation() { 
    var one = a + b; 
    var two = c + d; 
    rtnstr = "{ one:'" + one + "', two:'" + two + "'}"; 
    return rtnstr; 
} 

В коде C# затем сделать что-то вроде следующего:

using System; 
using System.IO; 
using Microsoft.ClearScript.V8; 

namespace ClearScriptConsole 
{ 
    class Program 
    { 
     static void Main(string[] args) { 

      V8ScriptEngine _v8Engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging); 

      string jsFilePath = @"..\..\HelloWorld.js"; 
      string jsContents = File.ReadAllText(jsFilePath); 

      _v8Engine.Execute(jsContents); 

      var returnedVal = _v8Engine.Script.calculation(); 
      Console.WriteLine(returnedVal); 
     } 
    } 
} 

И возвращенная стоимость дала мне е следующее:

The result of the calculation displayed in a console window.

Приветствия