加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – MVC Ajax.BeginForm替换奇怪的行为

发布时间:2020-12-16 04:12:26 所属栏目:asp.Net 来源:网络整理
导读:在局部视图中,我使用MVC Ajax.Beginform,如下所示: div id="divToReplace" @using (Ajax.BeginForm("Action","Controller,new AjaxOptions { InsertionMode = System.Web.Mvc.Ajax.InsertionMode.Replace,UpdateTargetId = "divToReplace" },new { id = "fo
在局部视图中,我使用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和责任函数:
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,而是将其内容替换为答案.现在我采取答案的内在部分,一切正常!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读