Jquery-Unobtrusive-Ajax не находит data-ajax-update
У меня есть следующая ссылка в моем проекте MVC Core:
<a asp-action="ArtictleDetailsById" asp-controller="Home" asp-route-area="Global" asp-route-id="@Model.Id" data-ajax="true" data-ajax-method="GET" data-ajax-mode="replace" data-ajax-update="ArticleDetails" class="btn btn-default">View Details</a>
который отправляет и извлекает данные, как ожидалось, но не обновляет целевой элемент. Более конкретно, при попытке отладки, следующее оценивается и пропускается (из jquery.unobtrusive-ajax.js):
$(element.getAttribute("data-ajax-update")).each(function (i, update) {
var top;
switch (mode) {
case "BEFORE":
top = update.firstChild;
$("<div />").html(data).contents().each(function () {
update.insertBefore(this, top);
});
break;
case "AFTER":
$("<div />").html(data).contents().each(function () {
update.appendChild(this);
});
break;
case "REPLACE-WITH":
$(update).replaceWith(data);
break;
default:
$(update).html(data);
break;
}
});
Но следующий код будет работать (заменив цикл.each()):
update = (element.getAttribute("data-ajax-update"));
$('#'+update).html(data);
Мне интересно, есть ли известная проблема с этим, надлежащее исправление или что-то я делаю неправильно. Я видел, что в прошлом были некоторые проблемы, связанные с использованием.live(), но здесь это не так.
0 ответов
Если ArticleDetails
идентификатор целевого элемента dom, перед ним необходимо добавить символ "#", например:
<a asp-action="ArtictleDetailsById" asp-controller="Home" asp-route-area="Global" asp-route-id="@Model.Id" data-ajax="true" data-ajax-method="GET" data-ajax-mode="replace" data-ajax-update="#ArticleDetails" class="btn btn-default">View Details</a>