2013-10-22 72 views
0

我有一個Ajax表單來更新它所在的局部視圖,但我需要它來更新第二個局部視圖。我想這樣做,而不是將它們合併成一個視圖並更新它。 我認爲我最好的選擇是在窗體的onsuccess上使用常規的jQuery Ajax調用,但我不知道使用了什麼參數,因此我可以調用Controller Action來返回部分以使其工作。如何使用常規Ajax更新MVC局部視圖

我的形式設置了

@using (Ajax.BeginForm("UpdateDateRange", 
           new { name = Model.Modules[i].Name }, 
           new AjaxOptions { UpdateTargetId = Model.Modules[i].Name.Replace(" ", "_") + "_module" } 
           )) 
          { [Input fields] } 
+0

顯示您的代碼.... –

回答

0

在你onSuccessmethod你可以讓另一AJAX調用。

因此,例如,在你的OnSuccessMehtod叫「MethodX」 ......這將做一個Ajax調用和更新頁面上的一個div返回的結果

var MethodX = function(id) 
{ 
    $.get("ActionName?id=" + id, function (result) { 
     $("#myAnotherdiv").html(result) 
    }, 'html'); 
} 
0

針對Ajax調用,您可以發送兩個部分認爲要與這個助手:

public static class MvcHelpers 
{ 
    public static string RenderPartialView(this Controller controller, string viewName, object model) 
    { 
     if (string.IsNullOrEmpty(viewName)) 
      viewName = controller.ControllerContext.RouteData.GetRequiredString("action"); 

     controller.ViewData.Model = model; 
     using (var sw = new StringWriter()) 
     { 
      ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName); 
      var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw); 
      viewResult.View.Render(viewContext, sw); 

      return sw.GetStringBuilder().ToString(); 
     } 
    } 
} 

並在控制器:

return Json(new { view1 = this.RenderPartialView(...), view2 = this.RenderPartialView(...) }); 

和成功,你可以得到兩個partialView並將其替換爲舊的:

function success(data) 
{ 
    $("someSelectorToSelectPartial1").html(data.view1); 
    $("someSelectorToSelectPartial2").html(data.view2); 
}