net control bootstrap asp asp.net servercontrols

asp.net - control - input asp net



Impedir que se ajusten las etiquetas<span> para el control del servidor ASP.NET (4)

Estaba experimentando el mismo problema. En mi caso estaba anulando los métodos:

protected override void OnPreRender(EventArgs e) { /* Insert the control''s stylesheet on the page */ }

y

protected override void RenderContents(HtmlTextWriter output) { /* Control rendering here, <span> tag will show up */ }

Para evitar esto, simplemente reemplacé la anulación de RenderContents con lo siguiente:

protected override void Render(HtmlTextWriter output) { /* Control rendering, no <span> tag */ }

Espero que esto ayude.

Estoy escribiendo varios controles del servidor ASP.NET y necesito eliminar las etiquetas que envuelven mi control de forma predeterminada. Soy consciente de que puede cambiar la etiqueta a otra diferente (como en esta pregunta, ¿Cómo puedo cambiar el comportamiento de procesamiento de mi control personalizado para que no sea un tramo ) pero cómo puede evitarlo?

Estoy heredando de WebControl (también puede heredar de CompositeControl).

Normalmente consigo:

<span>Control output</span>

Necesito:

Control output

Estoy anulando RenderContents (salida HtmlTextWriter) y los métodos CreateChildControls () (a través de varios controles). Mi necesidad inmediata es solucionar el problema utilizando el método RenderContents (HtmlTextWriter output).


No creo que la respuesta aceptada sea del todo necesaria. Podría estar equivocado, pero el método de renderización llama a los tres:

  • RenderBeginTag
  • Contenido de contenido
  • RenderEndTag

Por lo tanto, debería poder anular la representación y llamar manualmente a RenderContents:

protected override void Render(HtmlTextWriter writer) { this.RenderContents(writer); }

¿Nadie? Tal vez me esté perdiendo algo. Sé que este hilo es antiguo, pero recientemente me encontré con que lo anterior era mi solución.


Que hay de esto

public override void RenderBeginTag(HtmlTextWriter writer) { writer.Write(""); } public override void RenderEndTag(HtmlTextWriter writer) { writer.Write(""); }


Una forma más elegante de hacerlo es mediante el uso del controlador de WebControl (de forma predeterminada, esto se llama con HtmlTextWriterTag.Span)

public MyWebControl() : base(HtmlTextWriterTag.Div){}

y reemplaza el método RenderBeginTag para agregar atributos personalizados u otras cosas:

public override void RenderBeginTag(HtmlTextWriter writer) { writer.AddAttribute("class", "SomeClassName"); base.RenderBeginTag(writer); }