C#中解析javascript代码
大部分的解释型脚本语言都提供 eval 方法来完成动态代码的解释执行, C# 却并不提供(向 Java 学习)。不过在 .NET Framework 类库里面提供的 Microsoft.JScript 命名空间倒是包含了支持使用JScript 语言编译和生成代码的类。
先上代码:
该类需要你添加对程序集 Microsoft.JScript 的引用;如果把“current version with JScriptCodeProvider” 部分代码替换为“deprecated version with Vsa”部分代码,你还需要添加对程序集 Microsoft.Vsa 的引用。
代码段末尾注释掉的部分是用 Microsoft.JScript.Vsa.VsaEngine 作为脚本引擎来完成 Evaluate 工作;但 VsaEngine (包括其所实现的 IVsaEngine 接口)在 .NET Framework 2.0 中已经被 deprecated ,所以如果你在新版本下编译的话,会得到如下的警告信息:“Microsoft.JScript.Vsa.VsaEngine”已过时:“Use of this type is not recommended because it is being deprecated in Visual Studio 2005; there will be no replacement for this feature. Please see the ICodeCompiler documentation for additional help.”
这样的 Evaluate 方法一个显而易见的用途就是解析 JSON 数据。 JSON 的数据格式实际上是 JavaScript 对象定义语法的子集,所以使用这个 Framework 所提供的脚本引擎来解析得到的 JSON 格式的数据就比自己写一个 Parser 来的轻松得多。比如:
view plaincopy to clipboardprint?
string jsStr =
"( {'timeString':'Time is: ' + new Date(),'dateValue':new Date()} )";
Microsoft.JScript.JSObject obj =
(Microsoft.JScript.JSObject) JSEvaluator.EvalToObject(jsStr);
MessageBox.Show(obj["timeString"].ToString());
MessageBox.Show(obj["dateValue"].ToString());
Microsoft.JScript.DateObject tmpV =
(Microsoft.JScript.DateObject)obj["dateValue"];
DateTime dt =
(DateTime) Microsoft.JScript.Convert.Coerce(tmpV, typeof(
相关文档:
今天在用DataList的模板列的时候习惯性地像在03中那样去给模板列的绑定字段加个处理函数:
< asp:Label ID = " Label1 " runat = " server " Text = ' <%#ConvertState(Bind("Status"))%> ' ></ asp:Label >
可是竟然出错:当前上下文中不存在名称“Bind” ......
c# SQL数据库远程连接及配置方法
一:C# 连接SQL数据库
Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;
Server=myServerAddress;D ......
{
SqlConnection cnn = new SqlConnection
("context connection=true");
cnn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cmd.CommandText = "select * from customers";
SqlDataReader reader = cmd.ExecuteReader();
SqlContext.Pipe.Send(reader);
reader.Close();
cnn.Close();
}
......
// 大学里最痛苦的事情莫过于做毕业设计,目前正处于这个时期。
// :( :(
//
// 首先记录下的是 Function 的一个问题
Function.prototype.method = function( name, func){
if( ! this.prototype[ name]){
this.prototype[ name ] = func;
}
} // 给 函数原型增加方法
//
// 给函数原型增加的方法在 St ......
进入新的项目组后,发现自己的功力差远了,他们写的javaScript代码我很多都看不懂,现在我做java前端开发,javaScript是非常重要的,现在我决定重新拾起《JavaScript高级程序设计》学习,成为一个javaScript能手。
看完第一章我到还是搞不明白DOM的意思。
......