javascript - 如何从 Blazor C# 代码调用静态 JavaScript 方法

标签 javascript c# interop blazor

首先,我的 JS:

class MyClass {
    static myMethod() {
        alert("TEST");
    }
}

我的 JS 运行时是这样注入(inject)的:

[Inject] protected IJSRuntime Js { get; set; }

我想像这样调用一个静态方法:

Js.InvokeVoidAsync("MyClass.myMethod");

但是我得到一个错误:

Microsoft.JSInterop.JSException: Could not find 'MyClass' in 'window'.

有没有一种明智、合理的方法解决这个问题,或者只通过将 window.MyClass = MyClass 添加到我的 JS?

最佳答案

试试这个(假设服务器端 Blazor)。

在您的 _Host.cshtml 文件中:

(function () {
    window.MyClass = {
        myMethod: function () {
            return alert('TEST');
        }
    };
})();

在 .razor 文件中(顶部):

@*Inject JSRuntime to allow JavaScript Interop *@
@inject IJSRuntime JSRuntime

在 .razor 文件的方法中:

await JSRuntime.InvokeAsync<string>(
            "MyClass.myMethod", null
            );

参见: Blazor JavaScript Interop

关于javascript - 如何从 Blazor C# 代码调用静态 JavaScript 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58888300/

相关文章:

javascript - vue-router 中可能的模板注入(inject),如 Angular-ui-router

javascript - 如何使用 "forEach"函数传递对象数组?

c# - 更改设计器时控件的属性未正确更新

c# - "Specified cast is not valid"错误

java - Java 中的用户定义值类是什么样的?

c++ - 编写 C++ Dll 并将其高效地公开给 .NET(不通过 C++/CLI)

c# - 如何在 C# 上为包装的 C++ 方法编写签名,该方法具有指向函数及其参数的指针?

javascript - 从 React 中检查的输入中获取值

c# - 如何在 C# 中测试 View 模型是否处于设计器模式

javascript - 多线图表中的画笔仅适用于一根线