MVC Ajax.BeginForm 替换奇怪的行为

2024-04-24

在部分视图中,我使用 MVC Ajax.Beginform 如下所示:

<div id="divToReplace">
    @using (Ajax.BeginForm("Action", "Controller,
                           new AjaxOptions
                           {
                               InsertionMode = System.Web.Mvc.Ajax.InsertionMode.Replace,
                               UpdateTargetId = "divToReplace"
                           },
                           new
                           {
                                id = "formID"
                           }))
    {
        ...
</div>

提交表单时,我希望孔 div“divToReplace”被答案替换(再次是部分视图)。但是 div“divToReplace”的内部 html 被答案替换,因此部分视图的开头如下所示:

<div id="divToReplace">
    <div id="divToReplace">
           ...

我究竟做错了什么?


好吧,过了一段时间,我遇到了同样的问题,现在我想弄清楚,所以我查看了 jquery.unobtrusive-ajax.js 和 responsable 函数:

function asyncOnSuccess(element, data, contentType) {
    var mode;

    if (contentType.indexOf("application/x-javascript") !== -1) {  // jQuery already executes JavaScript for us
        return;
    }

    mode = (element.getAttribute("data-ajax-mode") || "").toUpperCase();
    $(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;
            default:
                // Changed this line because of generating duplicate IDs
                //$(update).html(data);
                $(update).html($(data).html());
                break;
        }
    });
}

正如您在默认部分中看到的,答案没有替换 updatetargetid,而是用答案替换了其内容。现在我得到了答案的内部部分,一切正常!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC Ajax.BeginForm 替换奇怪的行为 的相关文章

随机推荐