Повторный запуск Блейзора из статического метода

#c# #asynchronous #leaflet #blazor #rerender

#c# #асинхронный #брошюра #блейзор #повторный запуск

Вопрос:

У меня есть тестовая настройка сервера 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
}
  

В интерфейсе / HTML я показываю текущие координаты:

 <div>
Latitude: @LatLng.Lat.ToString("0.00000") , Longitude : @LatLng.Lng.ToString("0.00000") <div/>
  

Но координаты не обновляются во внешнем интерфейсе. Я должен выполнить повторный запуск вручную, чтобы они отображали последнюю позицию. В других нестатических функциях я использовал «InvokeAsync (StateHasChanged);» для решения этой проблемы, но здесь я не могу (CS0120).

Для нестатического поля, метода или свойства ‘member’ требуется ссылка на объект

Чтобы использовать нестатическое поле, метод или свойство, необходимо сначала создать экземпляр объекта. Дополнительные сведения о статических методах см. в разделе Статические классы и статические члены класса. Дополнительные сведения о создании экземпляров классов см. в разделе Конструкторы экземпляров.

Как я могу это решить?