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

dinsdag 9 maart 2010

Vervanger voor ASP.NET Dynamic Data Web Application

Momenteel ben ik een fervent gebruiker van de ASP.NET AJAX control suite van Telerik. Ik heb geprobeerd een simpele Database editor te ontwikkelen, ter vervanging van het ASP.NET Dynamic Data Web Application project uit Visual Studio 2008.

Dit Visual Studio 2008 C# project kan je hier downloaden. Let op: de Telerik assembly is verwijderd uit het ZIP bestand. Hier zal je zelf voor moeten zorgen.

Dit project bevat:
  1. 1 LINQ to SQL diagram met alle tabellen uit mijn AdventureWorks SQL Server database
  2. 1 webpagina met:
    - 1 RadGrid voor het tonen en wijzigen van records uit een SQL Server tabel
    - 1 RadComboBox voor het tonen van alle tabellen uit het LINQ to SQL diagram
    - 3 RadioButtons voor het specificeren van de EditMode eigenschap van het RadGrid
    - 1 LinkButton om het volledige grid te exporteren naar MS Excel

Dit project is dus heel wat simpeler dan een Dynamic Data Web Application. Om deze functionaliteit te gebruiken in je eigen webproject dien je het volgende te doen:

  • Kopieer de webpagina en het LINQ to SQL diagram naar je eigen webproject
  • Verwijder alle tabellen uit het LINQ to SQL diagram en voeg de tabellen uit je eigen SQL Server database aan het diagram.

Dat is alles... succes ermee !