C#-读取JavaScript文件并访问变量

C#-读取JavaScript文件并访问变量,c#,javascript,C#,Javascript,我有一个JavaScript文件,其中定义了变量并分配了值。可以用C#读取.js文件并轻松检索变量和值吗?我知道变量名是什么,但值是json字符串。我希望我不必求助于正则表达式 编辑:我无法控制JavaScript文件的内容。第三方将文件放到某个位置,我需要将其拾取、读取并解析 编辑2:好吧,忘了我提到的json。这实际上与我的问题无关…在这一点上似乎没有一个简单的解决方案。因此,我逐行读取.js文件,搜索变量名,并获取值。以下代码供参考 using (StreamReader r = new

我有一个JavaScript文件,其中定义了变量并分配了值。可以用C#读取.js文件并轻松检索变量和值吗?我知道变量名是什么,但值是json字符串。我希望我不必求助于正则表达式

编辑:我无法控制JavaScript文件的内容。第三方将文件放到某个位置,我需要将其拾取、读取并解析

编辑2:好吧,忘了我提到的json。这实际上与我的问题无关…在这一点上似乎没有一个简单的解决方案。因此,我逐行读取.js文件,搜索变量名,并获取值。以下代码供参考

using (StreamReader r = new StreamReader("myFile.js"))
{
  while(r.Peek() >= 0)
    {
      var line = r.ReadLine();
      if(line.IndexOf("myVariableName") > -1)
      {
         var arr = line.split("=");
         var variable = arr[0].Trim();
         var value = arr[1].Trim();
      }
    }
}

如果您是一名web开发人员,希望将数据从JavaScript文件(客户端)发送到C#文件(服务器端),那么可以使用jQuery Ajax。您可以将变量传递给C#文件中的函数。请记住,必须将
[WebMethod]
属性添加到C#函数中,并且该函数必须是
静态的

$.ajax({
      type: "post",
      url: "Default.aspx/YourMethodName",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                data: JSON.stringify({ varOne: one , varTwo:two }),
                success: function (v) {
                    alert("Success");
                },
                error: function (error) {
                    alert("Error");
                },
                complete: function () {
                    alert("Complete");
                }
            });

我需要创建一个Browser Helper对象,以便从web生成的报告中提取数据并将其存储在本地文件系统中,我遇到了类似的问题

我做了以下操作来访问js值:

mshtml.IHTMLDocument document = (mshtml.IHTMLDocument)this.Explorer.IWebBrowser_Document;
object script = document.Script;

if (script != null)
{
    // Make the call:
    var jsvar = script.GetType().InvokeMember("eval", BindingFlags.InvokeMethod, null, script, new object[] { "HIS_VisitNumber" });

    // Cast...
    _strHISVisit = (string)jsvar;

    // Release the script object, and possibly the document object.
    Marshal.ReleaseComObject(script);
}
这里,这个.Explorer是通过Band对象(BHO)可用的Explorer对象

但是,当然,只有当您能够利用浏览器(IE)来加载和执行js时,这种方法才可能实现

如果你不能做到这一点,我想你需要的是一个完整的C#js解析器,还是我没有正确理解你的问题


在后一种情况下,您可以使用

我们从第三方获取JavaScript文件,因此我们所能做的就是读取它(用C#)并尝试提取数据。我将对我的问题进行编辑以使其更清楚。那么你想从一个文件中解析JSON内容吗?最终,我必须用C#解析JSON,但这不是我要问的问题。那部分我做起来没问题。我的问题是,JavaScript文件定义了多个变量,每个变量都有一个json值。当我用C#读入.js文件时,有没有办法将js文件中的所有变量/值自动转换为C#变量/值?或者,唯一的方法是使用StreamReader的ReadLine()方法吗?我不知道有哪个库可以为您这样做。由于这是一个非常特殊的情况,我想您必须自己解析.js文件。我希望它以一种易于阅读的形式出现。可能工作太多了,但是有一个基于nodejs的语法分析器UglifyJS很有趣……我将保留它以供将来参考。任何一种方法都应该允许您访问js中的变量,因此原则上这应该可以解决您的问题。