[英]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.