#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’ требуется ссылка на объект
Чтобы использовать нестатическое поле, метод или свойство, необходимо сначала создать экземпляр объекта. Дополнительные сведения о статических методах см. в разделе Статические классы и статические члены класса. Дополнительные сведения о создании экземпляров классов см. в разделе Конструкторы экземпляров.
Как я могу это решить?