我在视图上使用了多个局部视图。
在左手侧。我有一些链接按钮。

在中间,我有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.ActionUrl.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/

10-12 16:22