[英]asp.net mvc, returning multiple views as JSON
是否可以在Asp.net中将2个单独的视图返回给ajax调用?
例如,如果foo1和foo2是2个分别返回视图的ActionResult方法?
return Json(new { a = foo1(), b = foo2() });
当前正在尝试此操作,最终结果是javascript将其作为类对象而不是实际视图重新获得,有人知道如何获取最终呈现的html吗?
编辑:我猜我实际上要做什么,有没有办法让我以字符串格式返回渲染视图?
是的,它们是一种以string
格式返回视图的方法。
为此,您需要执行以下操作:
1.您需要一些方法,您可以在其中传递您的视图名称和对象模型。 为此,请参考下面的代码并添加到您的帮助器类中。
public static class RenderViewLib
{
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();
}
}
}
上面的代码将以字符串格式返回您的视图。
2.现在从您的json调用中调用上述方法,如下所示:
[HttpPost]
public JsonResult GetData()
{
Mymodel model = new Mymodel();
JsonResult jr = null;
jr = Json(new
{
ViewHtml = this.RenderPartialView("_ViewName", model),
ViewHtml2 = this.RenderPartialView("_ViewName2", model),
IsSuccess = true
}, JsonRequestBehavior.AllowGet);
return jr;
}
并且您将从json调用中以string
格式获取视图。
希望这是您想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.