Render PartialView to String - ASP.NET MVC
Недавно была задача, отрендерить PartialView в строку, чтобы потом ее передать как параметр в ответ на ajax запрос... в интернете нашел пару примеров, но если в partialView использовались html или ajax хелперы, рендеринг крешался... поэтому решил написать свой код. Большое спасибо за помощь программе Reflector - что помогла мне понять как решить эту задачу))))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public static class HtmlHelperExtensions { public static string RenderPartialToString(ControllerContext context, string partialViewName, ViewDataDictionary viewData, TempDataDictionary tempData) { ViewEngineResult result = ViewEngines.Engines.FindPartialView(context, partialViewName); if (result.View != null ) { StringBuilder sb = new StringBuilder(); using (StringWriter sw = new StringWriter(sb)) { using (HtmlTextWriter output = new HtmlTextWriter(sw)) { ViewContext viewContext = new ViewContext(context, result.View, viewData, tempData, output); result.View.Render(viewContext, output); } } return sb.ToString(); } return String.Empty; } } |
теперь вызовем этот метод из контроллера:
1 2 | object modelForPartialView = new { Value = "Value" }; string partialViewHtml = HtmlHelperExtensions.RenderPartialToString( this .ControllerContext, "PartialViewName" , new ViewDataDictionary(modelForPartialView), new TempDataDictionary()); |
WBR,
Bobasoft )))