2011-06-13 82 views
2

如何在2個或更多的JSON字段中返回HTML?從部分視圖中返回純HTML

return Json(
new 
{ 
    Breadcrumbs = PartialView("Breadcrumbs/Breadcrumbs", model.Breadcrumbs), 
    FolderDetail = PartialView("Detail/Folder", model.FolderDetail) 
}); 

在這種情況下,我沒有得到HTML,但JSON對象,在result.BreadCrumbs和result.FolderDetail

+1

您的最後一句難以理解。 – 2011-06-13 11:04:17

+0

@gaearon這句話的意思是「在這種情況下,我沒有得到HTML,但JSON對象,在result.BreadCrumbs和result.FolderDetail」。編輯。 – bzlm 2011-06-13 11:05:25

回答

4

PartialView是告訴系統一個ActionResult呈現局部視圖,而不是輸出HTML。以下是我目前使用的代碼將視圖呈現爲字符串,然後將其添加到JSON結果中:

public static string RenderPartialToString(this Controller controller, string viewName, object model) 
    { 
     if (string.IsNullOrEmpty(viewName)) 
      viewName = controller.ControllerContext.RouteData.GetRequiredString("action"); 

     controller.ViewData.Model = model; 

     using (StringWriter sw = new StringWriter()) 
     { 
      ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName); 
      ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw); 
      viewResult.View.Render(viewContext, sw); 

      return sw.GetStringBuilder().ToString(); 
     } 
    } 
+0

clarkson thx男人 – 2011-06-13 11:16:04