¿Cuál es la diferencia entre Render y RenderControl en la creación de WebControl?
-
22-07-2019 - |
Pregunta
Recientemente aprendí a escribir mis propios WebControls, pero todavía no estoy seguro de 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 ahora antes de ponerme en mi camino.
Solución
RenderControl se usa si hay un control existente que proporciona lo que desea para que pueda aprovechar cómo se representa.
Render se usa si necesita tomar el 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 ...
EDITAR
Para una mejor explicación sobre esto, y un excelente punto sobre qué usar cuando, vea la respuesta de mhenry1384 .
Otros consejos
Aquí hay una buena lectura: Render vs RenderControl
Extracto de enlaces:
El Procesar habilita controlador para renderizarse escribiendo Salida HTML a la secuencia de respuesta. Esto pasa una referencia a la Objeto HTMLTextWriter, que puede escribir directamente a la secuencia de respuesta. Esta El método debe usarse cuando deriva directamente desde el control.
El Se utiliza el método RenderControl por la página para representar a cada individuo controlar. Permite al consumidor de tu clase para representarlo, y puedes úselo para representar los controles secundarios si Estás usando un control compuesto. Además, una cosa a tener en cuenta es que esto no se invocará si la visibilidad la propiedad en el control se establece en falso.
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 se debe llamar 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, por ejemplo, en un control personalizado donde almacena los controles en la colección ControlsCollection pero desea 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 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 copiar y pegar, pero no me pareció muy útil volver a escribir una explicación tan clara)
Todavía no entiendo por qué MS no simplemente convirtió Render () en un método público. ¿Por qué es necesario un RenderControl () separado? Falta el razonamiento para eso en todas las respuestas dadas hasta ahora. La primera persona que puede explicarlo recibe un voto brillante.
RenderControl se utiliza para que la página represente controles secundarios. Renderizar permite que un control individual se renderice a sí mismo.