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);
}