2009-10-31 16 views

Respuesta

5

RenderControl se utiliza si hay un control existente que proporciona lo que desea para que pueda aprovechar la forma en que se representa.

Render se utiliza si necesita tener control total sobre cómo se procesa el html.

Por supuesto, puede combinar los dos para el uso más óptimo de su tiempo de programación ...

2

RenderControl se utiliza para que la página represente los controles secundarios. Render permite que se represente un control individual.

17

Aquí es una buena lectura: Render vs RenderControl

Extracto de enlaces:

El método Render permite que el controlador para rendir misma escribiendo salida HTML para la secuencia de respuesta. Pasa una referencia al objeto HTMLTextWriter , que puede escribir directamente en la secuencia de respuesta. Este método se debe usar cuando obtiene directamente del control.

El método RenderControl se utiliza por la página para representar cada control individual . Permite que el consumidor de su clase lo represente, y puede usarlo para representar los controles secundarios si está utilizando un control compuesto. Además, una cosa a tener en cuenta es que este no se invocará si la propiedad de visibilidad en el control está configurada en falsa.

6

Render es un método protegido, lo que significa que las clases derivadas únicamente pueden acceder a él. Se llama dentro del Ciclo de vida del evento y no debe llamarse explícitamente en su código.

RenderControl es un método público que le permite llamar al método Render cuando lo desee. Lo usaría en, digamos, un Control personalizado donde almacene Controles en la Colección de controles, pero desee Renderizarlos en su propia celda en una tabla. Por ejemplo:

 
    writer.Write(""): 
    foreach(Control ctl in Controls) 
    { 
     writer.Write("") 
     ctl.RenderControl(writer); 
     writer.Write(""); 
    } 
    writer.Write(""); 

Siempre debe anular Render, y no RenderControl, como se le llama en el ciclo de vida de eventos (como ya he dicho)

(de http://forums.asp.net/t/909220.aspx/1, lo siento mi respuesta es sólo una copie y pegue de eso, pero no vi mucho más reescribir una explicación tan clara como el cristal)

Todavía no entiendo por qué MS no simplemente hizo que Render() sea un método público. ¿Por qué es necesario un RenderControl() independiente?El razonamiento para eso falta en todas las respuestas dadas hasta ahora. La primera persona que puede explicarlo obtiene un voto positivo brillante.

+0

+1 para detallar algunos de los bits confusos sobre el sistema. Ayudó a pintar una imagen más completa para mí. –

Cuestiones relacionadas