У меня есть редактируемая форма, на первом компоненте рендеринга все в порядке, но когда я покидаю страницу и возвращаюсь назад, возникает сообщение «Нет отслеживаемого объекта с идентификатором« x ». Возможно, экземпляр DotNetObjectReference уже был удален. "
OnAfterRenderAsyn c Метод:
private DotNetObjectReference<Groups> _objRef;
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await base.OnAfterRenderAsync(firstRender);
if (firstRender)
{
_objRef = DotNetObjectReference.Create(this);
await JSRuntime.InvokeVoidAsync("JSFun", _objRef);
}
}
Метод JSInvoke:
[JSInvokable]
public void UpdateModel(string Id)
{
Group = GroupService.Get(new Guid(Id));
StateHasChanged();
}
Метод удаления:
public void Dispose()
{
_objRef?.Dispose();
}
Javascript Метод : (здесь на второй странице рендера возникает ошибка)
$(document).on('click', '.btnEdit', function () {
instance.invokeMethodAsync('UpdateModel', Id).then(c => {
editModal.modal('show');
});
});
Обновление Я решаю проблему, изменяя обработчик события из $ (document) .on ('click' to wrapperInstance.on ('click', где wrapperInstance - это обертка для моего текущего компонента:
var wrapper = $ ("# wrapper"); обертка. removeClass (); wrapper.addClass ("wrapper" + instance ["_ id"]); var wrapperInstance = $ (". wrapper" + instance ["_ id"]);
обратите внимание, что я добавил оболочку к своему компоненту следующим образом:
<div id="wrapper">
component content
</div>