Control de Render sin Pagina

Actualmente estoy trabajando con un marco interno. Todo es genial, pero el marco no usa páginas aspx, representa páginas usando Response.Write. El problema que tengo es que necesito usar un control de rad en la página, por lo que todo lo que necesito hacer es generar el control de rad para obtener el código HTML para poder volcarlo en la página. es posible? He intentado crear un objeto Page para que funcione, pero no funciona. Parece que cuando se llama a una página, se está realizando otra inicialización. También intenté enviar HttpContext.Current.Handler a una página, pero eso no funcionó porque estaban usando otra clase, no System.Web.UI.Page para manejar las solicitudes.

En este punto no estoy muy seguro de qué más intentar. Si puedo imitar la clase de creación de páginas, sería maravilloso. ¿Alguien sabe los pasos exactos para crear e inicializar un objeto de página correctamente?

Esperemos que esto tenga sentido … si no, intentaré hacerlo más comprensible.

¡Gracias!

Actualizar

Solo quería darte el código con el que estoy jugando. Espero que esto te muestre lo que estoy tratando de hacer:

esto está funcionando

HtmlForm f = new HtmlForm(); RadEditor re = new RadEditor(); f.ID = "form1"; this.Page.Controls.Add(f); re.ID = "rdControl"; StringBuilder sb = new StringBuilder(); StringWriter tw = new StringWriter(sb); HtmlTextWriter hw = new HtmlTextWriter(tw); //Page p = new Page();//(Page)HttpContext.Current.Handler; //HtmlForm f = new HtmlForm(); //p.Controls.Add(f); f.Controls.Add(re); 

Esto no está funcionando:

 HtmlForm f = new HtmlForm(); RadEditor re = new RadEditor(); f.ID = "form1"; Page p = new Page(); p.Controls.Add(f); re.ID = "rdControl"; StringBuilder sb = new StringBuilder(); StringWriter tw = new StringWriter(sb); HtmlTextWriter hw = new HtmlTextWriter(tw); //Page p = new Page();//(Page)HttpContext.Current.Handler; //HtmlForm f = new HtmlForm(); //p.Controls.Add(f); f.Controls.Add(re); 

idealmente, me gustaría que el segundo funcione en cierta medida para poder generar el código. Perdona el desorden. Era mi código de prueba.

Actualizar

Así que lo pensé, y creo que sé dónde está el problema. El control está intentando acceder a un montón de archivos que no están incluidos en la dll, como archivos de idioma, estilos, archivos js, etc. Creo que el problema podría ser que cuando creo una nueva instancia de Page, no sé Donde esa página está en referencia a todos los recursos. ¿Hay alguna manera de configurar la página a una URL “virtual”? Ahora mismo estoy jugando con este código:

 HttpContext context = new HttpContext(new HttpRequest(string.Empty, "http://localhost:2090/default.aspx", string.Empty), new HttpResponse(null)); 

Puedes probar el método RenderControl, que escribe en un HtmlTextWriter

 var stringWriter = new StringWriter(); var htmlWriter = new HtmlTextWriter(stringWriter); myControl.RenderControl(htmlWriter); var s = stringWriter.ToString(); 

Después de mucha investigación, logré descubrir lo que me faltaba para generar la página. Aparentemente hay una función, p.DesignerInitialize (), que inicializa la página. Una vez que se llama a esto, genera la página y los controles se pueden procesar fuera de ella. Aquí está mi nueva función que estoy usando:

 public string RenderRad() { StringBuilder sb = new StringBuilder(); StringWriter tw = new StringWriter(sb); HtmlTextWriter hw = new HtmlTextWriter(tw); MyPage p = new MyPage(); p.DesignerInitialize(); HtmlForm f = new HtmlForm(); p.Controls.Add(f); f.Controls.Add(re); re.RenderControl(hw); return sb.ToString(); } 

También tengo una clase que se hereda de la página que deshabilitará la verificación de todos los controles en el formulario:

  public partial class MyPage : System.Web.UI.Page { public override void VerifyRenderingInServerForm(Control control) { return; } }