源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

C#执行Javascript代码的几种方法总结

  • 时间:2022-11-14 17:58 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:C#执行Javascript代码的几种方法总结
[b]一、开源项目 Javascript .NET[/b] 地址:[url=http://javascriptdotnet.codeplex.com/] http://javascriptdotnet.codeplex.com/[/url] 它是Google Chrome V8引擎在.NET上的封装,功能完善,性能相对较高,推荐使用! (缺点就是asp.net web应用上,好象会报错) 示例代码:
[u]复制代码[/u] 代码如下:
using Noesis.Javascript; using System; using System.Collections.Generic; namespace JsCSharp {     class Program     {         static void Main(string[] args)         {             using (JavascriptContext ctx = new JavascriptContext())             {                 var i = ctx.Run("1+2");                 Console.WriteLine(i);//3                 ctx.Run("var d = new Date(2013,9-1,2,20,30,15)");                 var d = ctx.GetParameter("d");                 Console.WriteLine(d);//2013/9/2 20:30:15                 var j = ctx.Run("function add(x,y){return x+y;};add(5,10);");                 Console.WriteLine(j);//15                 ctx.Run("var obj = {};obj.name='jimmy';obj.sex='Male';obj.name='杨俊明'");                 var obj = ctx.GetParameter("obj") as Dictionary<string, object>;                 foreach (var key in obj.Keys)                 {                     Console.WriteLine(string.Format("{0}:{1}", key, obj[key]));                     //name:杨俊明                     //sex:Male                 }                 var jsonArr = ctx.Run("[{Airport:'PEK',Name:'北京首都机场'},{Airport:'XIY',Name:'西安咸阳机场'}]") as Array;                 foreach (var item in jsonArr)                 {                     var json = item as Dictionary<string, object>;                     foreach (var key in json.Keys)                     {                         Console.WriteLine(string.Format("{0}:{1}", key, json[key]));                         //Airport:PEK                         //Name:北京首都机场                         //Airport:XIY                         //Name:西安咸阳机场                     }                 }                 ctx.SetParameter("x", 7);                 ctx.Run("function add(x,y){return x+y;}; function sub(x,y){return x-y;};k = add(2,x);var t = sub(9,1);");                 var k = ctx.GetParameter("k");                 Console.WriteLine(k);//9                 var t = ctx.GetParameter("t");                 Console.WriteLine(t);//8                 Console.Read();             }         }     } }
部署时要注意,msvcp100.dll、msvcr100.dll这二个文件,要复制到bin目录下 [b]二、利用Microsoft.JScript.Vsa[/b] 先添加Microsoft.JScript、Microsoft.Vsa二个程序集的引用,然后就能用了,示例代码如下:
[u]复制代码[/u] 代码如下:
using Microsoft.JScript; using Microsoft.JScript.Vsa; using System; namespace JsCSharp {     class Program     {         static VsaEngine Engine = VsaEngine.CreateEngine();         static void Main(string[] args)         {             var i = (int)EvalJScript("1+2;");             Console.WriteLine(i);//3             var d = (DateObject)EvalJScript("var d = new Date(2013,9-1,2,20,30,15)");             Console.WriteLine(d);//Mon Sep 2 20:30:15 UTC+8 2013             var j = EvalJScript("function add(x,y){return x+y;};add(5,10);");             Console.WriteLine(j);//15             var obj = EvalJScript("var obj = {};obj.name='jimmy';obj.sex='Male';");             Console.WriteLine(obj);//Male 注:只返回最后一条执行的语句结果             Console.Read();         }           static object EvalJScript(string JScript)         {             object Result = null;             try             {                 Result = Microsoft.JScript.Eval.JScriptEvaluate(JScript, Engine);             }             catch (Exception ex)             {                 return ex.Message;             }             return Result;         }     } }
Vsa的功能比较有限,多条语句执行时,只返回最后一条语句的执行结果。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部