Не пойманный (в обещании) Ошибка: Система.ArgumentException: с этим событием не связан обработчик событий. Идентификатор события: ‘4’»

#blazor

#blazor

Вопрос:

Описание проблемы

При использовании атрибута привязки и события onblur для элемента ввода вызывает Uncaught (in promise) Error: System.ArgumentException: There is no event handler associated with this event. EventId: '4 .

Пример: https: //www.syncfusion.com/downloads/support/directtrac/general/ze/BlazorApp531274741370

Процедура репликации

  1. Запустите образец
  2. Нажмите кнопку навигации, чтобы перейти на страницу счетчика
  3. Затем введите что-либо в текстовое поле, которое отображается на странице счетчика
  4. Теперь нажмите кнопку «Назад» в браузере Chrome.
  5. Теперь посмотрите консоль для ошибки

Скриншот

Нажмите здесь, чтобы просмотреть скриншот ошибки

Ошибка

 Uncaught (in promise) Error: System.ArgumentException: There is no event handler associated with this event. EventId: '4'. (Parameter 'eventHandlerId')
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.DispatchEventAsync(UInt64 eventHandlerId, EventFieldInfo fieldInfo, EventArgs eventArgs)
   at Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer.DispatchEventAsync(UInt64 eventHandlerId, EventFieldInfo eventFieldInfo, EventArgs eventArgs)
   at Microsoft.AspNetCore.Components.WebAssembly.Infrastructure.JSInteropMethods.DispatchEvent(WebEventDescriptor eventDescriptor, String eventArgsJson)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
--- End of stack trace from previous location ---
   at Microsoft.JSInterop.Infrastructure.DotNetDispatcher.InvokeSynchronously(JSRuntime jsRuntime, DotNetInvocationInfoamp; callInfo, IDotNetObjectReference objectReference, String argsJson)
   at Microsoft.JSInterop.Infrastructure.DotNetDispatcher.BeginInvokeDotNet(JSRuntime jsRuntime, DotNetInvocationInfo invocationInfo, String argsJson)
    at Object.endInvokeDotNetFromJS (https://localhost:44389/_framework/blazor.webassembly.js:1:4191)
    at Object.invokeJSFromDotNet (https://localhost:44389/_framework/blazor.webassembly.js:1:3797)
    at Object.w [as invokeJSFromDotNet] (https://localhost:44389/_framework/blazor.webassembly.js:1:64075)
    at _mono_wasm_invoke_js_blazor (https://localhost:44389/_framework/dotnet.5.0.0.js:1:190800)
    at do_icall (<anonymous>:wasm-function[10595]:0x194e46)
    at do_icall_wrapper (<anonymous>:wasm-function[3305]:0x79df6)
    at interp_exec_method (<anonymous>:wasm-function[2155]:0x44ad0)
    at interp_runtime_invoke (<anonymous>:wasm-function[7861]:0x12efed)
    at mono_jit_runtime_invoke (<anonymous>:wasm-function[7346]:0x118e4d)
    at do_runtime_invoke (<anonymous>:wasm-function[3304]:0x79d3f)
 

Фрагмент кода

 <input @bind="val" @onblur="blurevent" />

@code{​​​​​​​
    public void blurevent(FocusEventArgs args)
    {​​​​​​​

    }​​​​​​​

    public string val {​​​​​​​ get; set; }​​​​​​​
}​​​​​​​ 

Ответ №1:

Я нашел решение этой проблемы здесь

В основном добавление: private async Task Callback(KeyboardEventArgs args) { --code-- await Task.Yield(); --code-- } устраняет проблему.

Говорят, что это будет исправлено в .Net 6