【问题标题】:Invoke Javascript file from C# application从 C# 应用程序调用 Javascript 文件
【发布时间】:2014-04-10 20:14:24
【问题描述】:

我有一个 .js 文件,它执行构建数组字符串的相当简单的任务。无需赘述,我发现 Javascript 是执行此特定任务的最佳语言。

我现在想要的是在我的 C# 应用程序中访问该数组。 Javascript 无法访问文件系统,因此在使用 C# 读取之前将数组写入文件是不可能的。

有没有简单的方法来做到这一点?这两种语言可以交互吗?

【问题讨论】:

  • JSC 一直是 .Net 的一部分...因此,如果您可以先编译它,您可以从 JavaScript 中获得正常的 .Net 可执行文件...也不清楚为什么您无法访问文件可能带有本地 JavaScript 的系统...
  • 你用 Jquery 标记了这个问题,这是一个 Web 应用程序吗?

标签: c# javascript jquery .net


【解决方案1】:

检查一个名为 Jurassic 的 JavaScript 解析器:

例如,取自他们的文档:

var engine = new Jurassic.ScriptEngine();
Console.WriteLine(engine.Evaluate("5 * 10 + 2"));

【讨论】:

  • @user3478799 没问题!如果您觉得有用,您仍然可以将其标记为正确答案!
【解决方案2】:

假设在 Windows 上使用本地 JavaScript。

您绝对可以像使用任何其他脚本语言一样使用本地 JavaScript 访问文件。

这是创建文件表单Working with files MSDN 文章的示例:

function CreateFile()
{
   var fso = new ActiveXObject("Scripting.FileSystemObject");
   var tf = fso.CreateTextFile("c:\\testfile.txt", true);
   tf.WriteLine("Testing 1, 2, 3.") ;
   tf.Close();
}

如果需要,您还可以使用 .Net JSC 编译器编译一些 JavaScript 以获得可执行文件(甚至可能是 .Net 程序集)。

【讨论】:

    【解决方案3】:

    为什么不呢?假设这是一个 Web 表单 C# 应用程序,您可以使用 ScriptManager 类从 C# 代码访问 Javascript 函数,该类是 System.Web.UI 的一部分

     protected void Page_Load(object sender, EventArgs e)
     {
            ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "GetData", "Javascript:getArrayValues();", true);
     }
    

    在 HTML 标记中定义一个类似的标签

    <asp:HiddenField ID ="hfArrayValues" runat ="server" Value ="" />
    

    在 getArrayValues() JS 函数中,您可以将数组值存储到隐藏变量中,然后从后面的代码中访问该值

     function getArrayValues() {
            var arr = ["value 1", "value 2", "value 3"];
            var hfvalue = document.getElementById('hfArrayValues').value = arr;
     }
    

    以及可以访问数组值的 C# 方法

     protected void Button1_Click(object sender, EventArgs e)
     {
            Response.Write(hfArrayValues.Value);
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-10
      • 1970-01-01
      • 1970-01-01
      • 2021-03-26
      • 1970-01-01
      • 2020-08-17
      • 2011-10-07
      相关资源
      最近更新 更多