如何使用参数从 JS 文件调用 Blazor 组件中的 C# none 静态方法?

How to call C# none static method in Blazor component from JS file with parameter?

Microsoft docs 解释了如何从带参数的 JS 代码调用组件实例方法。在示例中,JS文件中的函数通过IJSRuntime从Blazor组件调用。

// In  razor component
public async Task TriggerDotNetInstanceMethod()
{
    objRef = DotNetObjectReference.Create(this);
    result = await JS.InvokeAsync<string>("sayHello2", objRef, name);
}

[JSInvokable]
public string GetHelloMessage(string passedName) => $"Hello, {passedName}!";

// In JS file.
<script>
   window.sayHello2 = (dotNetHelper, name) => {
   return dotNetHelper.invokeMethodAsync('GetHelloMessage', name);
 };
</script>

我的问题是如何通过事件从 JS 文件中使用参数调用 Blazor 组件中的 JSInvokable C# 方法。例如,Google map API returns 通过 JS 文件中地图内部的事件响应,其中包含地址和坐标。我想将这些详细信息传递给剃刀组件中的 none 静态方法,以便对它们进行更多处理。

我找到了答案here

需要一个全局变量并将我们的 DotNetObjectReference 传递给它。然后我们可以通过这个对象变量调用 invokeMethodAsync 并调用我们的带参数的 C# 方法。现在,它对我有用!

var object;

window.JsFunctionHelper = {MapSuccessResponse: function (instance, address) {
       object = instance;
       return instance.invokeMethodAsync("GetAddress", valuesFromApi);
       }
 };

 function getValuesFromApi() {
      .
      .
      .

      object.invokeMethodAsync("GetAddress", valuesFromApi);
 }