Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在一个AJAX调用中返回两个部分_C#_Asp.net Mvc - Fatal编程技术网

C# 如何在一个AJAX调用中返回两个部分

C# 如何在一个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返回一个partial,有没有办法通过AJAX调用加载两个partial

// 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