Для того, чтобы идентифицировать left и top , вам необходимо предоставить уникальный идентификатор (uid) для каждого тега привязки. Ваш uid может быть ElementReference
или просто статическим c (жестко заданным) именем. С помощью этого uid вы можете определить, откуда возникает событие, а затем искать его в dom, чтобы найти относительную позицию относительно области просмотра.
Ниже приведены изменения, которые вам нужно будет сделать, чтобы получить элементы слева и сверху позиции.
Razor Component
@inject IJSRuntime JSRuntime // need to inject IJSRuntime to invoke a JavaScript function.
<a id="anchor1" href="" class="Add" @onclick='() => SingleAddClick("anchor1")' @onclick:preventDefault>
@code{
private async Task SingleAddClick(string clickedElementId)
{
//your existing code
// call the javacript method that will be returing something.
var dimensions = await JSRuntime.InvokeAsync<string>("getDimensions", clickedElementId);
// I've used a dynamic type object so that I don't need to create a custom class to desealize it.
dynamic d = Newtonsoft.Json.JsonConvert.DeserializeObject<dynamic>(dimensions);
// Since I've used dynamic keyword thus the type will get resolved at runtime.
// Will throw exception if d is null thus need to be handled properly.
string top = d.top;
string left = d.left;
}
}
JS Библиотека
Если вы используете какой-либо существующий файл js для службы взаимодействия, добавьте ниже метод javascript, иначе создайте новый файл js и укажите его в _host.
function getDimensions(element) {
return JSON.stringify(document.getElementById(element).getBoundingClientRect());
}
Примечание. Метод getBoundingClientRect () возвращает размер элемента и его положение относительно области просмотра.