title: Create Instance Aspx Page of Ascx Control In a Back End Class without Loading FilePath
body: <p><strong>Question:</strong> Is it possible in back end code <strong><em>(not in the code behind but in an actual back end class)</em></strong> to load and render a page or control defined in a .aspx or .ascx without having to use Load(path) and instead just create an instance of the page/control class?</p>
  
  <p>I want to be able to do this (from a back end class NOT a code behind):</p>
  
  <pre><code>MyControl myCtl = new MyApp.Views.Shared.MyControl();
  String html = Util.ControlToString(myCtl); //I get an empty string &amp; hidden errors
  </code></pre>
  
  <p>instead of this</p>
  
  <pre><code>public static string ControlToString(string path)
  {
      Page pageHolder = new Page();
      MyControl myCtl = (MyControl)pageHolder.LoadControl(path);
      pageHolder.Controls.Add(myCtl);
      StringWriter output = new StringWriter();
      HttpContext.Current.Server.Execute(pageHolder, output, false);
      return output.ToString();
  }
  </code></pre>
  
  <p><strong>Details:</strong>
  In a Asp.net WebApp I occasionally need to render a user control (.ascx) or page (.aspx) as a HTML string.  When a page or control inherits from a code behind, its class shows up in intellisense in my back end code and I can create an instance and set properties without getting compile time or run time errors. However, when I try to render the page or control I always get an empty string and upon inspection the page or control shows suppressed internal rendering errors unless I load the page or control using its physical file path. </p>
  
  <p>I think the key issue has to do with when &amp; how the .aspx / .ascx files are runtime compiled.  I don't want to create a pre compiled class library of user controls because that would make the design process awkward and I really like the designer features offered by the .aspx / .ascx pages and so I'd love to find a way to make the pages compile in the solution so that they are usable like any other back end class but can still be created using the designer.  I want the best of both worlds (1) to be able to edit pages and controls in the designer and (2) create instances and set their properties using back end classes.</p>