gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:57:33 26 4
gpt4 key购买 nike

在局部 View 中,我正在使用 MVCs 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"被答案(再次部分 View )替换。但是,div "divToReplace"的内部 html 被替换为答案,因此部分 View 的开头如下所示:
<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,而是用答案替换了它的内容。现在我采用答案的内部部分,一切正常!

关于asp.net-mvc - MVC Ajax.BeginForm 替换奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9110494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com