3

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() の使用に関していくつかの問題があったことがわかりましたが、ここではそうではありません。

4

1 に答える 1