Around and About .NET World

Il blog di Marco Minerva
posts - 1671, comments - 2232, trackbacks - 2121

My Links

News

Contattami su Live Messenger:


MCTS: Windows, Web, Distributed Applications & SQL Server

MCPD: Enterprise Applications

Tag Cloud

Archives

Post Categories

Links

[70-515] Errore grosso come una casa

Come ben sa chiunque abbia letto anche solo uno dei libri di certificazione Microsoft, i testi sono pieni di errori… Alcuni sono sviste, mentre altri sono molto gravi, come quello che ho appena riscontrato nel capitolo dedicato alla creazione di Custom Web Control.

In esso, si parla dei metodi RenderBegin e RenderEndTag, per creare il codice HTML corrispondente rispettivamente al tag di apertura e a quello di chiusura del controllo. Nel libro si legge che:

Note that the RenderEndTag is not required, because it is automatically called and will render an end tag based on the supplied begin tag.

Anche gli esempi successivi sono coerenti con questa affermazione, infatti il metodo RenderEndTag non viene mai utilizzato.

Tuttavia, questa nota mi è subito sembrata abbastanza strana, perché vorrebbe dire che il framework .NET estrae il nome del tag dalla stringa utilizzata nella chiamata a RenderBeginTag e lo usa per generare un tag di chiusura con lo stesso nome. E nel caso in cui in RenderBeginTag si inseriscano più tag annidati, la EndRenderTag li dovrebbe chiudere tutti automaticamente?

La prova dei fatti ha confermato i miei dubbi: se si crea un controllo che estende la classe WebControl e al suo interno si effettua l’override del metodo RenderBeginTag, ma non di RenderEndTag, in fase di esecuzione si ottiene una bella eccezione:

System.InvalidOperationException: A PopEndTag was called without a corresponding PushEndTag.

Inutile aggiungere altro…

Print | posted on domenica 6 novembre 2011 13.47 | Filed Under [ C# VB .NET ASP .NET ]

Comments have been closed on this topic.

Powered by: