zondag 14 maart 2010

Bepaal de complete HTML van een ASP.NET Control

De volledige HTML van een ASP.NET control (inclusief alle onderliggende controls) kan je bepalen door onderstaande code toe te passen:

string html = null;
using (StringWriter stringWriter = new StringWriter())
{
using (HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter))
{
control.RenderControl(htmlWriter);
html = stringWriter.ToString();
}
}

Hierboven is de 'control' variabele natuurlijk een instantie van een ASP.NET control.

Helaas kan jij bij bovenstaande code tegen een probleem aanlopen. Wanneer zich binnen het control, waar je de HTML van wilt bepalen, controls bevinden die binnen een ASP.NET Form geplaatst moeten worden (zoals bijvoorbeeld een TextBox, CheckBox, enz.), dan treedt de volgende fout op:
Control 'TextBox1' of type 'TextBox' must be placed inside a form tag with runat=server

Dit probleem kan je oplossen door het volgende te doen:
  1. Zet de volgende optie in de 'Page Directive' van de pagina: EnableEventValidation="False" Deze optie kan ook in de Web.Config ingesteld worden. Dan geldt dit voor alle pagina's in je web project
  2. 'Override' de volgende methode in de pagina: VerifiyRenderingInServerForm. Deze methode hoeft dan geen enkele code te bevatten

Check het MSDN om te bepalen of je vindt dat deze twee opties inderdaad aangepast/overriden mogen worden in jouw project:
Page.VerifiyRenderingInServerForm
PageSection.EnableEventValidation

1 opmerking:

Unknown zei

Super handig!

Ps. Voor al je ict-vacatures, kijk eens op jouw ictvacature .