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 )))


Ищите нас в интернетах!

Комментарии

Свежие вакансии