如何使用参数从 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);
}
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);
}