如何在点击Ajax.Actionlink上刷新多个部分视图

Ama*_*lla 15 asp.net-mvc asp.net-ajax asp.net-mvc-3

我在我的视图上使用多个部分视图.在左侧我有一些链接按钮.

在中间我有2个局部视图让我们假设Up和Down我能够更新Up partialview现在我想更新Down部分视图点击同一个链接按钮

我只能在Ajax.ActionLink按钮中发送一个UpdateTargetID,但我想更新2 Partialview一个同一个按钮的clcik.

1)有没有办法可以在Ajax.ActionLink中传递多个UpdateTargetID或2)我可以在Home Controller中返回多个局部视图或者你建议的任何其他方式请回复我

谢谢大家回复让我告诉你我做了什么,以便在单击时刷新多个局部视图这是我用来点击的动作链接在这里我使用此Action链接的OnSucess函数来更新,此Action链接是部分视图

                 <%= Ajax.ActionLink("Select", "Employee", new { Id = Employee.EmployeeID }, new AjaxOptions { UpdateTargetId = "EmployeeDiv", HttpMethod = "Post", OnSuccess = "function(){EmployeeHistory(-2," + Employee.EmployeeID.ToString() + ");}" })%>
Run Code Online (Sandbox Code Playgroud)

这是我从局部视图调用的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 });

}
Run Code Online (Sandbox Code Playgroud)

这两个div在索引视图中,我想更新

        <div id="Paritalview div1"><% Html.RenderPartial("PartialViewname1"); %></div>
        <div id="Paritalview div2"><% Html.RenderPartial("PartialViewname2"); %></div>
Run Code Online (Sandbox Code Playgroud)

RPM*_*984 14

是的 - 不要使用Ajax.ActionLink.

与Web Forms一样,IMO,MS Ajax库也很臃肿.

保持简单 - 使用jQuery - 然后你有完全控制:

$(function() {
   $('#somelink').click(function(e) {
      e.preventDefault();

      $.get('/controller/action1', function(data) {
         $('#up').html(data);
      });

      $.get('/controller/action2', function(data) {
         $('#down').html(data);
      });
   });
});
Run Code Online (Sandbox Code Playgroud)

但是,由于您要更新两个面板,我建议将这两个中间面板包装在它自己的局部视图中 - 然后通过单个操作方法提供 - 这样您只需要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作为参数等.

  • 好答案.为了确保,不要显式地显示Controller/Action URL,而是使用Url.Action呈现正确的URL. (2认同)