Вызов функции C# Blazor JQuery
Нужна помощь в сортировке ошибки, добавлен скриншот кода и ошибка, возвращенная кодом. Попытка вызвать функцию C# из JQuery и передать ей параметры.
_Host
function getElementSVG(e) {
var position = getPosition(e);
var circle = makeSVG('circle', { cx: position.pointx, cy: position.pointy, r: 0.02, stroke: 'black', 'stroke-width': 0.5, fill: 'black' });
document.getElementById(e.currentTarget.id).appendChild(circle);
DotNet.invokeMethodAsync('PeopleCounterWeb', 'AddPointToList', position.pointx, position.pointy).then(result => {
console.log(result);
});
return position;
}
function fnsuccesscallback(data) {
alert(data.d);
}
function fnerrorcallback(result) {
alert(result.statusText);
}
function makeSVG(tag, attrs) {
var el = document.createElementNS('http://www.w3.org/2000/svg', tag);
for (var k in attrs)
el.setAttribute(k, attrs[k]);
return el;
}
function getPosition(e) {
var rect = e.target.getBoundingClientRect();
var x = e.clientX - rect.left;
var y = e.clientY - rect.top;
var width = rect.width;
var height = rect.height;
var pointx = ((x / width) * 100).toFixed(2);
var pointy = ((y / height) * 100).toFixed(2);
return {
pointx,
pointy
}
};
MainMap.cshtml
[JSInvokable]
public string AddPointToList(string x, string y)
{
var alpha = x + "-" + y;
return "";
//Points.Add(obj[0], obj[1]);
}
1 ответ
Вы пытаетесь вызвать сообщение в экземпляре, не передавая ссылку на этот экземпляр. Без экземпляра вы можете вызывать только статические методы.
Вам нужно будет создать экземпляр DotNetReference на C# и передать его JS.
В Blazor University есть раздел о вызове C# из JS - https://blazor-university.com/javascript-interop/calling-dotnet-from-javascript/