一、开源项目Javascript.NET
地址:https://javascriptdotnet.codeplex.com/它是GoogleChromeV8引擎在.NET上的封装,功能完善,性能相对较高,推荐使用!(缺点就是asp.netweb应用上,好象会报错)
示例代码:
代码如下:
usingNoesis.Javascript;
usingSystem;
usingSystem.Collections.Generic;
namespaceJsCSharp
{
classProgram
{
staticvoidMain(string[]args)
{
using(JavascriptContextctx=newJavascriptContext())
{
vari=ctx.Run(“1+2”);
Console.WriteLine(i);//3
ctx.Run(“vard=newDate(2013,9-1,2,20,30,15)”);
vard=ctx.GetParameter(“d”);
Console.WriteLine(d);//2013/9/220:30:15
varj=ctx.Run(“functionadd(x,y){returnx+y;};add(5,10);”);
Console.WriteLine(j);//15
ctx.Run(“varobj={};obj.name=’jimmy’;obj.sex=’Male’;obj.name=’杨俊明'”);
varobj=ctx.GetParameter(“obj”)asDictionary<string,object>;
foreach(varkeyinobj.Keys)
{
Console.WriteLine(string.Format(“{0}:{1}”,key,obj[key]));
//name:杨俊明
//sex:Male
}
varjsonArr=ctx.Run(“[{Airport:’PEK’,Name:’北京首都机场’},{Airport:’XIY’,Name:’西安咸阳机场’}]”)asArray;
foreach(variteminjsonArr)
{
varjson=itemasDictionary<string,object>;
foreach(varkeyinjson.Keys)
{
Console.WriteLine(string.Format(“{0}:{1}”,key,json[key]));
//Airport:PEK
//Name:北京首都机场
//Airport:XIY
//Name:西安咸阳机场
}
}
ctx.SetParameter(“x”,7);
ctx.Run(“functionadd(x,y){returnx+y;};functionsub(x,y){returnx-y;};k=add(2,x);vart=sub(9,1);”);
vark=ctx.GetParameter(“k”);
Console.WriteLine(k);//9
vart=ctx.GetParameter(“t”);
Console.WriteLine(t);//8
Console.Read();
}
}
}
}
部署时要注意,msvcp100.dll、msvcr100.dll这二个文件,要复制到bin目录下
二、利用Microsoft.JScript.Vsa
先添加Microsoft.JScript、Microsoft.Vsa二个程序集的引用,然后就能用了,示例代码如下:
代码如下:
usingMicrosoft.JScript;
usingMicrosoft.JScript.Vsa;
usingSystem;
namespaceJsCSharp
{
classProgram
{
staticVsaEngineEngine=VsaEngine.CreateEngine();
staticvoidMain(string[]args)
{
vari=(int)EvalJScript(“1+2;”);
Console.WriteLine(i);//3
vard=(DateObject)EvalJScript(“vard=newDate(2013,9-1,2,20,30,15)”);
Console.WriteLine(d);//MonSep220:30:15UTC+82013
varj=EvalJScript(“functionadd(x,y){returnx+y;};add(5,10);”);
Console.WriteLine(j);//15
varobj=EvalJScript(“varobj={};obj.name=’jimmy’;obj.sex=’Male’;”);
Console.WriteLine(obj);//Male注:只返回最后一条执行的语句结果
Console.Read();
}
staticobjectEvalJScript(stringJScript)
{
objectResult=null;
try
{
Result=Microsoft.JScript.Eval.JScriptEvaluate(JScript,Engine);
}
catch(Exceptionex)
{
returnex.Message;
}
returnResult;
}
}
}
Vsa的功能比较有限,多条语句执行时,只返回最后一条语句的执行结果。
上述就是C#学习教程:C#执行Javascript代码的几种方法总结分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)! 您可能感兴趣的文章:C#和JavaScript实现交互的方法c#和javascript函数相互调用示例分享javascript函数中执行c#函数的方法C#javascript读写Cookie的方法javaScript函数中执行C#代码中的函数方法
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/905301.html