Один из способов сделать это - вернуть JsonResult
, содержащий html для обеих частичек. Мы используем расширение для преобразования частичного в HTML для возврата в вызовах AJAX.
Это расширение является расширением на Controller
:
public static class ControllerExtensions
{
public static string PartialViewToHtml(this Controller controller, string viewName)
{
return controller.PartialViewToHtml(viewName, null);
}
public static string PartialViewToHtml(this Controller controller, string viewName, object model)
{
if (string.IsNullOrEmpty(viewName))
viewName = controller.ControllerContext.RouteData.GetRequiredString("action");
if (model != null)
controller.ViewData.Model = model;
using (var writer = new StringWriter())
{
var result = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
var context = new ViewContext(controller.ControllerContext, result.View, controller.ViewData, controller.TempData, writer);
result.View.Render(context, writer);
return writer.GetStringBuilder().ToString();
}
}
}
После этого вы можете написать Action
следующим образом:
// AJAX?
if (!Request.IsAjaxRequest())
{
return View(model);
}
return Json(new
{
html1: this.PartialViewToHtml("_ViewSongAmendmentsWriters", model),
html2: this.PartialViewToHtml("_PartialView2", model2)
});