code_junkie

load a user control programmatically in to a html text writer

Nov 12th, 2011
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. StringBuilder sb = new StringBuilder();
  2. StringWriter sw = new StringWriter(sb);
  3. HtmlTextWriter writer = new HtmlTextWriter(sw);
  4.  
  5. Control uc = LoadControl("~/includes/HomepageNews.ascx");
  6. uc.RenderControl(writer);
  7. return sb.ToString();
  8.  
  9. public class ViewManager
  10. {
  11. public static string RenderView(string path, object data)
  12. {
  13. Page pageHolder = new Page();
  14. UserControl viewControl = (UserControl) pageHolder.LoadControl(path);
  15.  
  16. if (data != null)
  17. {
  18. Type viewControlType = viewControl.GetType();
  19. FieldInfo field = viewControlType.GetField("Data");
  20. if (field != null)
  21. {
  22. field.SetValue(viewControl, data);
  23. }
  24. else
  25. {
  26. throw new Exception("ViewFile: " + path + "has no data property");
  27. }
  28. }
  29.  
  30. pageHolder.Controls.Add(viewControl);
  31. StringWriter result = new StringWriter();
  32. HttpContext.Current.Server.Execute(pageHolder, result, false);
  33. return result.ToString();
  34. }
  35. }
Add Comment
Please, Sign In to add comment