我在视图上使用了多个局部视图。
在左手侧。我有一些链接按钮。
在中间,我有2个局部视图,让我们假设上下
我可以更新Up部分视图
现在我想单击同一链接按钮来更新“向下”局部视图
我只能在Ajax.ActionLink按钮中发送一个UpdateTargetID
但我想单击同一按钮来更新2个局部视图。
1)有什么办法可以在Ajax.ActionLink中传递多个UpdateTargetID?
要么
2)我可以在Home Controller中返回多个局部视图
或您建议的任何其他方式
请回复我
谢谢大家的回复
让我告诉您我为一次单击刷新多个局部视图所做的工作
这是我要点击的操作链接
在这里,我使用此Action链接的OnSucess Function进行更新,此Action链接位于局部视图上
<%= Ajax.ActionLink("Select", "Employee", new { Id = Employee.EmployeeID }, new AjaxOptions { UpdateTargetId = "EmployeeDiv", HttpMethod = "Post", OnSuccess = "function(){EmployeeHistory(-2," + Employee.EmployeeID.ToString() + ");}" })%>
这是我从局部视图调用的JavaScript
function EmployeeHistory(EmployeeID) {
var url = '<%= Url.Action("PartialviewAction", "ControllerName") %>'
$('#PartialviewDiv1').load(url, { Id: EmployeeID });
var url1 = '<%= Url.Action("PartialviewAction", "ControllerName") %>'
$('#PartialviewDiv2').load(url1, { Id: EmployeeID });
}
而这两个div在我要更新的索引视图中
<div id="Paritalview div1"><% Html.RenderPartial("PartialViewname1"); %></div>
<div id="Paritalview div2"><% Html.RenderPartial("PartialViewname2"); %></div>
最佳答案
是的,有-不要使用Ajax.ActionLink
。
IMO,MS Ajax库和Web Forms一样肿。
保持简单-使用jQuery-这样您就可以完全控制:
$(function() {
$('#somelink').click(function(e) {
e.preventDefault();
$.get('/controller/action1', function(data) {
$('#up').html(data);
});
$.get('/controller/action2', function(data) {
$('#down').html(data);
});
});
});
但是,由于要同时更新两个面板,因此建议将这两个中间面板包装在其自身的局部视图中,然后通过单个操作方法进行处理,这样您只需要1个ajax调用即可。
编辑
正如@FelixM提到的那样,您应该使用
Url.Action
或Url.RouteUrl
来生成AJAX调用的URL,因此,如果您的路由发生了变化,那么您的JS就不需要了,例如:.get('@Url.Action('Controller', 'Action1')', function(data)
要么
.get('@Url.RouteUrl('SomeNamedRoute')', function(data)
如果您将此脚本放在外部文件中,则需要使用一种技术在主视图中设置url,然后从外部变量中读取。
这些技术包括JavaScript变量,隐藏字段,传递URL以用作参数等。
关于asp.net-mvc - 如何在单击Ajax.Actionlink时刷新多个局部 View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6342951/