Как обновить несколько partialview при щелчке Ajax.Actionlink

Я использую несколько частичных представлений в моем представлении. слева. У меня есть кнопка ссылки.

В середине у меня есть 2 частичных вида. Допустим, вверх и вниз. Я могу обновить частичный вид вверх. Теперь я хочу обновить частичный вид вниз, нажав одну и ту же кнопку ссылки.

Я могу отправить только один UpdateTargetID в кнопке Ajax.ActionLink, но я хочу обновить 2 частичных вида нажатием одной и той же кнопки.

1) Есть ли способ, которым я могу передать более одного UpdateTargetID в Ajax.ActionLink или 2) Я могу вернуть несколько частичных представлений в Home Controller или любым другим способом, как вы предложили Пожалуйста, ответьте мне

Спасибо всем за ответы Позвольте мне рассказать вам, что я сделал, чтобы обновить несколько частичных представлений одним щелчком мыши. Это ссылка на действие, которую я использую, чтобы щелкнуть здесь. Я использую функцию OnSucess этой ссылки на действие, чтобы обновление, это действие ссылка на частичное представление

                 <%= 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>

Ответы

Ответ 1

Да, есть - не используйте 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);
      });
   });
});

Однако, поскольку вы обновляете обе панели, я бы предложил обернуть эти две средние панели в частичном виде, чтобы они были собственными, а затем выполнить это с помощью одного действия - таким образом вам понадобится только один вызов ajax.

Edit

Как упоминает @FelixM, вы должны использовать Url.Action или Url.RouteUrl для создания URL-адреса для вызова AJAX, поэтому, если ваши маршруты изменяются, то ваш JS не нужен, например:

.get('@Url.Action('Controller', 'Action1')', function(data)

или

.get('@Url.RouteUrl('SomeNamedRoute')', function(data)

Если вы помещаете этот script во внешний файл, вам нужно будет использовать технику для установки url в главном представлении, а затем прочитать из внешней переменной.

Такие методы включают переменную JavaScript, скрытое поле, прохождение URL-адреса для функции в качестве параметра и т.д.