[英]How to invoke a function written in a javascript file from C# using IronJS
[英]Invoke Javascript file from C# application
我有一個.js文件,該文件執行構建數組字符串的相當簡單的任務。 無需贅述,我發現Javascript是執行此特定任務的最佳語言。
我現在想要的是在C#應用程序中訪問該數組。 Javascript無法訪問文件系統,因此在用C#讀取文件之前將數組寫入文件是不可能的。
是否有捷徑可尋? 這兩種語言完全可以互動嗎?
檢查一下名為Jurassic的JavaScript解析器:
例如,取自他們的文檔:
var engine = new Jurassic.ScriptEngine();
Console.WriteLine(engine.Evaluate("5 * 10 + 2"));
假設在Windows上使用本地JavaScript。
您絕對可以像使用任何其他腳本語言一樣,使用本地JavaScript訪問文件。
這是創建文件表單的示例使用文件 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程序集)。
為什么不? 假設這是一個Web窗體C#應用程序,則可以使用System.Web.UI
一部分中的ScriptManager
類從C#代碼訪問Javascript函數。
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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.