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.

¿Fue útil?

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.

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