在 Blazor Web assembly 中从 .NET 读取 Javascript 变量

H.G*_*gen 0 .net javascript blazor

我是 Blazor Webassemble 的新手,了解如何从 .NET 代码调用 javascript 函数。我的问题是:是否也可以从 .NET 读取和写入 javascript 变量。这里有一个例子:

Javascript代码加载到页面中:

var Namespace1 = {
    prop1: 42, 
    func1: function () {
        return 42;
    }
}
Run Code Online (Sandbox Code Playgroud)

从.NET我可以调用函数Namespace1.func1:

@code { 
    //private int prop1 { get; set; } = 1;
    private int ret1 { get; set; }

    override protected async Task OnInitializedAsync() {
        // Error: The value 'window.Namespace1.prop1' is not a function.
        // ret1 = await JSRuntime.InvokeAsync<int>("Namespace1.prop1"); 
        ret1 = await JSRuntime.InvokeAsync<int>("Namespace1.func1");
        // return base.OnInitializedAsync();
    }
}
Run Code Online (Sandbox Code Playgroud)

是否也可以从.NET访问Namespace1.prop1

Uma*_*air 5

目前这是不可能的,因为IJsRuntime仅公开调用 javascript 函数的方法。详细信息请参见 Microsoft 文档

但是你可以编写一个js函数并返回一个属性:

var Namespace1 = {
    prop1: 42, 
    func1: function () {
        return prop1;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 您可以创建自己的 javascript,其中包含可以访问您想要访问的 js 属性的函数。所以基本上`blazor&gt;你的js&gt;只读js` (2认同)