Asp.net mvc 使用Ajax.ActionLink ASP.Net MVC更新多个目标ID
是否有一种方法可以使用Ajax.ActionLink指定多个更新目标ID,以便在回调时呈现一组局部视图 我看到的问题是Ajax.ActionLink只为我提供了一个要更新的目标id,但我需要的是在Ajax调用后使用不同的数据更新页面的多个区域Asp.net mvc 使用Ajax.ActionLink ASP.Net MVC更新多个目标ID,asp.net-mvc,jquery,Asp.net Mvc,Jquery,是否有一种方法可以使用Ajax.ActionLink指定多个更新目标ID,以便在回调时呈现一组局部视图 我看到的问题是Ajax.ActionLink只为我提供了一个要更新的目标id,但我需要的是在Ajax调用后使用不同的数据更新页面的多个区域 这方面的任何帮助都会很好!谢谢 没有。但是,您可以自己编写代码来实现这一点。您需要: 将返回的HTML划分为不同的“区域”,应用于页面的不同部分。您可以在控制器上(可能通过呈现多个操作并存储返回的HTML片段列表)或JavaScript来完成此操作 编写J
这方面的任何帮助都会很好!谢谢 没有。但是,您可以自己编写代码来实现这一点。您需要:
$.ajax({
type: "POST",
url: "/action/controller",
success: function(data) {
var key;
for (key in data) {
$("#" + key).html(data[key]);
}
}
});
这假定您调用的操作将返回一个对象,其中属性名称是要更新的元素的ID,属性值是作为字符串的HTML片段。您可以检查以下链接:
我也遇到过同样的问题,它帮助我解决了这个问题我知道这个问题很老,但如果你使用@Gregoire所指的相同解决方案(http://devlicio.us/blogs/sergio_pereira/archive/2009/08/23/asp-net-mvc-with-jquery-superload.aspx)对于服务器端,可以在AjaxOption中传递多个ID
@Ajax.ActionLink("Link", "Action", new AjaxOptions { UpdateTargetId = "id1, #id2" })
在这种情况下,MVC框架将自动将“#”前置到id1
。然后需要修改第45行附近的jquery.unobtrusive ajax.js
的asyncOnSuccess函数,如下所示:
mode = (element.getAttribute("data-ajax-mode") || "").toUpperCase();
$(element.getAttribute("data-ajax-update")).each(function (i, update) {
var top,
html = $("#" + update.id, data).html();
switch (mode) {
case "BEFORE":
top = update.firstChild;
$("<div />").html(html).contents().each(function () {
update.insertBefore(this, top);
});
break;
case "AFTER":
$("<div />").html(html).contents().each(function () {
update.appendChild(this);
});
break;
default:
$(update).html(html);
break;
}
});
mode=(element.getAttribute(“数据ajax模式”)| |“”).toUpperCase();
$(element.getAttribute(“数据ajax更新”))。每个(函数(i,更新){
var top,
html=$(“#”+update.id,data.html();
开关(模式){
“之前”一案:
top=update.firstChild;
$(“”).html(html).contents().each(函数)(){
update.insertBefore(此,顶部);
});
打破
“之后”一案:
$(“”).html(html).contents().each(函数)(){
update.appendChild(本);
});
打破
违约:
$(更新).html(html);
打破
}
});
Javascript只是使用传递的相同id来获取该内容,并用相同的内容替换相同的id。这也适用于Ajax.BeginForm()。有意义吗?我使用了这个,工作了,只是做了一些小改动,让它在VB中工作。不过,这是一个混乱的解决方案。mvc团队向我们求助的时候需要挨一记耳光,为什么他们不能像人们所期望的那样,创建一个能够正常工作并完成日常基本工作的框架?@Erx_VB.NExT.Coder:更干净的解决方案是使用Json结果,您可以在此页面上使用javascript更新页面的任何部分result@Erx_VB.NExT.Coder我知道这是很久以前的事了,但如果您不必继续使用asp.net框架,您应该研究ApacheWicket。Wicket使用Java作为服务器端代码(只有细微的区别)。