如何在Blazor中实现拖放?

blazor c# html

我知道Blazor是一项新技术。它目前的发布状态为v0.5.1

但是,我目前正在为新的Web应用程序实现PoC。我们希望在应用中使用拖放功能。我尝试用Blazor方式实现它,但它不起作用。

我的droptarget:

<div class="col" ondragstart="@AllowDragOver" ondrop="@Add">

和可拖动的项目:

<div class="col" ondragstart="@AllowDragOver" ondrop="@Add">

Blazor C#代码:

<div class="col" ondragstart="@AllowDragOver" ondrop="@Add">

}

问题是放置目标不会在浏览器中显示为放置目标:

在浏览器中拖放

到目前为止我所读到的是,当将事件处理程序附加到Blazor C#函数(例如ondragstart)时,默认行为是众所周知的“e.preventDefault()”,它应该使放置目标可以放置。

有谁知道如何解决这一问题?

斯文

热门答案

重要提示:我认为目前不支持UIDragEventArgs ...

...“比默认行为是众所周知的”e.preventDefault()“,这应该使得drop target droppable”==>我不确定。

Here's how you've got to set your elements.
Note: The code in the methods below is in Javascript. You've got to translate it to C#  

    <div id="targetDiv" class="col" ondrop="@Add" ondragover="@AllowDrop"></div>

    <span id="draggedSpan" class="badge badge-warning" draggable="true" ondragstart="@AllowDragOver>îtem 1</span>

@functions {

void Add(UIDragEventArgs e)
{
    e.preventDefault();
    var data = e.dataTransfer.getData("text");
    e.target.appendChild(document.getElementById(data));

     Items.Add("hello");
}

void AllowDragOver(UIDragEventArgs e)
{
     e.dataTransfer.setData("text", e.target.id);
}

void AllowDrop(UIDragEventArgs e)
{
    e.preventDefault();
}

}



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因