Blazor从静态方法重新渲染

问题描述

我有一个带有传单地图的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)。

非静态字段,方法属性“ member”需要对象引用

要使用非静态字段,方法属性,您必须 首先创建一个对象实例。有关静态的更多信息 方法,请参见静态类和静态类成员。欲了解更多 有关创建类实例的信息,请参见实例 构造函数

我该如何解决

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)