Blazor Drag and Drop 在 .NET Core 3.0 和 .NET 6.0 中的事件触发和 API 实现有所不同。要解决该问题,我们需要使用不同的 API 和更新代码,包括:
在 .NET 6.0 中,要使用 DragStart 和 DragEnd 事件来触发拖放操作,而不是在 .NET 3.0 中使用 DragStart 和 DragEnd。
在 .NET 6.0 中,要使用 IJSRuntime 而不是 IJSInProcessRuntime 来处理 JavaScript 交互。
在 .NET 6.0 中,要使用 'event' 关键字来获取事件对象。
示例代码:
.NET Core 3.0 代码示例:
@code { async Task DragStart(dynamic e) { e.dataTransfer.effectAllowed = "move"; e.dataTransfer.setData("Text", "Move Me"); } }
.NET 6.0 代码示例:
Drag Me
@code { [Inject] IJSRuntime JSRuntime { get; set; }
private async Task OnDragStart(DragEventArgs eventArgs)
{
// 获取数据传输对象并设置为进行拖动
eventArgs.DataTransfer.EffectAllowed = "move";
eventArgs.DataTransfer.DropEffect = "move";
// 将数据传输给 JavaScript
await JSRuntime.InvokeVoidAsync("setDataTransferData", eventArgs.DataTransfer);
}
private async Task OnDragEnd(DragEventArgs eventArgs)
{
// 重置数据传输对象
await JSRuntime.InvokeVoidAsync("resetDataTransferData", eventArgs.DataTransfer);
}
}
上述代码演示了如何在 .NET 6.0 中实现拖