You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 3.0升级.NET 6.0后Blazor移动端拖拽事件失效问题

.NET 6升级后Blazor移动端拖拽事件不触发问题

前期实现情况

  • 拖拽功能参考Chris Sainty推出的Blazor拖拽功能演示方案开发,这套方案实现思路精巧,对应源码可从作者公开Git仓库下载
  • 为了让示例兼容移动端,引入了DragDropTouch polyfill做适配,脚本引入代码如下:
<script id="DragDropTouch" src="https://bernardo-castilho.github.io/DragDropTouch/DragDropTouch.js"></script>
  • 调试时使用Conveyor工具支持移动端访问测试,在.NET Core 3.0版本时,iOS端的Safari、Chrome浏览器下拖拽功能运行完全正常

升级后异常表现

将项目从.NET Core 3.0升级至.NET 6.0后,移动端的@ondragstart和@ondrop事件不再触发:

  • JavaScript侧仍可正常捕获拖拽事件,说明polyfill本身工作正常
  • Blazor框架侧无法接收到对应事件
  • 桌面端在.NET 6.0、.NET Core 3.0版本下拖拽功能均运行完全正常

现象验证

JavaScript侧dragstart事件可正常触发,测试代码如下:

document.addEventListener('dragstart', function(ev) {
    if (ev.target.classList.contains('draggable')) {
        console.log('dragging');
    } else {
        console.log('ignoring draggable');
    }
});

Blazor组件绑定的dragstart事件完全无响应,对应组件代码如下:

<li class="draggable" draggable="true" title="@JobModel.Description" @ondragstart="@(() => HandleDragStart(JobModel))" >
    <p class="description">@JobModel.Description</p>
    <p class="last-updated"><small>Last Updated</small> @JobModel.LastUpdated.ToString("HH:mm.ss tt")</p>
</li>

@code {
    [CascadingParameter] JobsContainer Container { get; set; }
    [Parameter] public JobModel JobModel { get; set; }

    private void HandleDragStart(JobModel selectedJob)
    {
        Container.Payload = selectedJob;
    }
}

问题诉求

查找升级.NET版本导致该移动端事件异常的根本原因。

说明:已上传可复现该问题的示例代码仓库供排查参考。

内容的提问来源于stack exchange,提问作者clamchoda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 00:09:31