问题描述
我有一个带有传单地图的blazor服务器测试设置。要使用传单,我插入了一个javascript,效果很好。在传单地图中的javascript代码中,我调用了C#方法:
function onMapClick(e) {
marker.setLatLng(e.latlng);
DotNet.invokeMethodAsync('TestProject','getCoordinatesFromLeaflet',e.latlng);
}
据我了解,C#方法必须是静态的才能接收值。所以我在C#/ Blazor中的方法看起来像这样(也可以正常工作):
[JSInvokable]
public static void getCoordinatesFromLeaflet(LatLng tmp)
{
LatLng = tmp;
//InvokeAsync(StateHasChanged); doesn't work
//StateHasChanged(); doesn't work
}
在FrontEnd / HTML上,我显示当前坐标:
<div>
Latitude: @LatLng.Lat.ToString("0.00000"),Longitude : @LatLng.Lng.ToString("0.00000") <div/>
但是坐标不会在FrontEnd上更新。我必须手动重新渲染以使它们显示最新位置。在其他非静态函数中,我使用了“ InvokeAsync(StateHasChanged);”。解决此问题,但在这里我不能(CS0120)。
要使用非静态字段,方法或属性,您必须 首先创建一个对象实例。有关静态的更多信息 方法,请参见静态类和静态类成员。欲了解更多 有关创建类实例的信息,请参见实例 构造函数。
我该如何解决?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)