How to pass DragEventArgs from Blazor C# to a Javascript method that takes event as a parameter

166 Views Asked by At

In my Blazor project, I want to invoke a Javascript method, from within C#. The JS method takes a DragEvent as a parameter, but it doesn't seem as if JavaScripts event can accept DragEventArgs from Microsoft.AspNetCore.Components.Web as a suitable type.

My C# Code-behind:

        [Inject]
        public IJSRuntime JSRuntime { get; set; }

  private async Task HandleDragStart(DragEventArgs e)
        {
          await JSRuntime.InvokeVoidAsync("drag", e);
        }

My razor file:

 <div draggable="true"
@ondragstart="@(e => HandleDragStart(e))"> Drag me </div >

My Javascript Method:

function drag(event) {
 
     let clonedDragText = event.target.cloneNode(true); 
    clonedDragText.innerText = text;
    event.target.after(clonedDragText)
    event.dataTransfer.setDragImage(clonedDragText, 0, 0);
    setTimeout(() => clonedDragText.remove(), 1);
 
}

When invoking drag(event) I get error:

Cannot read property 'cloneNode' of undefined
0

There are 0 best solutions below