Render PartialView to String - ASP.NET MVC
четверг, 7 января 2010,
Bobasoft
Недавно была задача, отрендерить PartialView в строку, чтобы потом ее передать как параметр в ответ на ajax запрос... в интернете нашел пару примеров, но если в partialView использовались html или ajax хелперы, рендеринг крешался... поэтому решил написать свой код. Большое спасибо за помощь программе Reflector - что помогла мне понять как решить эту задачу))))
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; } }
теперь вызовем этот метод из контроллера:
object modelForPartialView = new { Value = "Value" }; string partialViewHtml = HtmlHelperExtensions.RenderPartialToString(this.ControllerContext, "PartialViewName", new ViewDataDictionary(modelForPartialView), new TempDataDictionary());
WBR,
Bobasoft )))