C# 如何在一个AJAX调用中返回两个部分
在我的控制器中,我通过AJAX返回一个partial,有没有办法通过AJAX调用加载两个partialC# 如何在一个AJAX调用中返回两个部分,c#,asp.net-mvc,C#,Asp.net Mvc,在我的控制器中,我通过AJAX返回一个partial,有没有办法通过AJAX调用加载两个partial // AJAX? if (!Request.IsAjaxRequest()) { return View(model); } return PartialView("_ViewSongAmendmentsWriters", model); 一种方法是返回一个JsonResult,其中包含两个部分的html
// AJAX?
if (!Request.IsAjaxRequest())
{
return View(model);
}
return PartialView("_ViewSongAmendmentsWriters", model);
一种方法是返回一个
JsonResult
,其中包含两个部分的html。我们正在使用一个扩展将部分转换为html,以便在AJAX调用中返回
此扩展是控制器上的扩展
:
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();
}
}
}
然后,您可以按如下方式编写操作
:
// AJAX?
if (!Request.IsAjaxRequest())
{
return View(model);
}
return Json(new
{
html1: this.PartialViewToHtml("_ViewSongAmendmentsWriters", model),
html2: this.PartialViewToHtml("_PartialView2", model2)
});
您想连接两个部分还是加载两个单独的部分?两个单独的部分就可以了。因为它们是两个结果表……您如何使用来自单个请求的“双重”部分视图?你需要在零件周围装上信封。哎呀,这根本不存在。也许返回JSON并在客户端构建表更合适?是否可以选择
return RedirectToAction
?因为我真的不想使用JsonResult
。