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 地图 API 通过 JS 文件中地图内的事件返回带有地址和坐标的响应。我想将这些细节传递给 razor 组件中的非静态方法,以便对它们进行更多处理。
答案 0 :(得分:-1)
我找到了答案 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);
}