Pregunta

i escribió una página (sólo clase que deriva de System.Web.UI.Page , que quiero utilizar en más sitios web que añadir dinámicamente WebControls a la colección Page.Controls como esto:.

Panel p = new Panel();
p.Style.Add("float", "left");
p.Controls.Add(locLT);
Page.Controls.Add(p);

este código hace solamente

<div style="float:left;">
</div>

¿Cómo puedo añadir HTML, encabezado y sección de cuerpo sin escribir manualmente esto? ¿Es posible?

¿Fue útil?

Solución

recomiendo MasterPages pero se puede hacer esto:

public class CustomBase : System.Web.UI.Page  
{    
    protected override void Render( System.Web.UI.HtmlTextWriter textWriter ) 
    {
        using (System.IO.StringWriter stringWriter = new System.IO.StringWriter())
        {
             using (HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter))
             {    
                 LiteralControl header =new LiteralControl();
                 header.Text = RenderHeader(); // implement HTML HEAD BODY...etc

                 LiteralControl footer = new LiteralControl();
                 footer.Text = RenderFooter(); // implement CLOSE BODY HTML...etc

                 this.Controls.AddAt(0, header); //top
                 this.Controls.Add(footer); //bottom

                 base.Render(htmlWriter); 
             }
        }

        textWriter.Write(stringWriter.ToString());
    }       

}

Otros consejos

No creo que hay alguna manera de generar automáticamente las etiquetas, pero usted puede crear su propio método Render que las salidas del marco HTML básico requerido.

Antes de utilizar MasterPages una forma común para agregar encabezado y el pie de página fue heredar de una BasePage como http: //gist.github.com/214437 y de la cabecera de carga BasePage y controles de pie de página. Creo que un MasterPage es mejor opción para usted que el BasePage anteriormente. Uno de los inconvenientes con un MasterPage es que hay que añadir asp:. Contenido en cada página, pero aún así es mejor que la vieja manera

Si su "página" es completamente dinámico y no tiene aspx front-end (no me di cuenta que esto era posible?!) ... entonces lo que realmente quiere es probablemente una costumbre HttpHandler en lugar de heredar de la página.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top