11

Javascript.js

function functionname1(arg1, arg2){content}

C# 文件

public string functionname(arg)
{
    if (condition)
    {
        functionname1(arg1,arg2); // How do I call the JavaScript function from C#?
    }
}

请参考上面的代码并建议我从 C# 调用 JavaScript 函数的想法。

4

4 回答 4

13

如果您想在 C# 中调用 JavaScript 函数,这将帮助您:

public string functionname(arg)
{
    if (condition)
    {
        Page page = HttpContext.Current.CurrentHandler as Page;
        page.ClientScript.RegisterStartupScript(
            typeof(Page),
            "Test",
            "<script type='text/javascript'>functionname1(" + arg1 + ",'" + arg2 + "');</script>");
    }
}
于 2013-09-21T11:47:12.867 回答
8

这可能对您有帮助:

<script type="text/javascript">
    function Showalert() {
        alert('Profile not parsed!!');
        window.parent.parent.parent.location.reload();
    }
    function ImportingDone() {
        alert('Importing done successfull.!');
        window.parent.parent.parent.location.reload();
    }
</script>

if (SelectedRowCount == 0)
{
    ScriptManager.RegisterStartupScript(this, GetType(), "displayalertmessage", "Showalert();", true);
}
else
{
    ScriptManager.RegisterStartupScript(this, GetType(), "importingdone", "ImportingDone();", true);
}
于 2013-09-21T13:00:37.280 回答
2

标题部分中的 .aspx 文件

<head>
    <script type="text/javascript">
        <%=YourScript %>
        function functionname1(arg1,arg2){content}
    </script>
</head>

.cs 文件

public string YourScript = "";
public string functionname(arg)
{
    if (condition)
    {
        YourScript = "functionname1(arg1,arg2);";
    }
}
于 2013-09-21T11:35:45.943 回答
1

您可以使用Jering.Javascript.NodeJS从 c# 调用 javascript 函数, Jering.Javascript.NodeJS是我组织的一个开源库:

string javascriptModule = @"
module.exports = (callback, x, y) => {  // Module must export a function that takes a callback as its first parameter
    var result = x + y; // Your javascript logic
    callback(null /* If an error occurred, provide an error object or message */, result); // Call the callback when you're done.
}";

// Invoke javascript
int result = await StaticNodeJSService.InvokeFromStringAsync<int>(javascriptModule, args: new object[] { 3, 5 });

// result == 8
Assert.Equal(8, result);

该库也支持直接从 .js 文件调用。假设您的文件C:/My/Directory/exampleModule.js包含:

module.exports = (callback, message) => callback(null, message);

您可以调用导出的函数:

string result = await StaticNodeJSService.InvokeFromFileAsync<string>("C:/My/Directory/exampleModule.js", args: new[] { "test" });

// result == "test"
Assert.Equal("test", result);
于 2020-03-04T04:30:08.663 回答