我的MVC核心项目中有以下链接:
<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 :(得分:0)
如果ArticleDetails
是目标dom元素的ID,则应在其前面添加一个“#”字符,如下所示:
<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>