tag net asp asp.net render web-controls

asp.net - net - ¿Cuál es la diferencia entre Render y RenderControl en la creación de WebControl?



asp net core render partial (4)

Aquí hay una buena lectura: Render vs RenderControl

Extracto de los enlaces:

El método Render permite que el controlador se reproduzca a sí mismo escribiendo la salida HTML en el flujo de respuesta. Esto pasa una referencia al objeto HTMLTextWriter, que puede escribir directamente en el flujo de respuesta. Este método debe usarse cuando se deriva directamente del control.

El método RenderControl es usado 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 esto no se invocará si la propiedad de visibilidad en el control se establece en falso.

Recientemente aprendí a escribir mis propios controles web, pero todavía estoy confuso sobre la diferencia entre Render y RenderControl. Comencé a usar Render, pero en algún momento comencé a usar RenderControl, que ahora uso exclusivamente. Si estoy formando un mal hábito, me gustaría cortarlo de raíz antes de que me establezca.


RenderControl se usa para que la página represente controles secundarios. Renderizar permite que un control individual se rinda solo.


RenderControl se usa si hay un control existente que proporciona lo que desea para que pueda aprovechar cómo se procesa.

Render se usa si necesita tomar control total sobre cómo se procesa el html.

Por supuesto, puede combinar los dos para un uso óptimo de su tiempo de programación ...

EDITAR
Para una mejor explicación sobre esto, y un excelente punto sobre qué usar cuando, vea la respuesta de mhenry1384 .


Renderizar es un método protegido, lo que significa que solo las clases derivadas 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 almacena los controles en la colección ControlsCollection, pero desea procesarlos 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 llama en el Ciclo de vida del evento (como ya he dicho)

(de http://forums.asp.net/t/909220.aspx/1 , lo siento, mi respuesta es solo una copia y pegado de eso, pero no vi mucho punto en volver a escribir una explicación tan clara)

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