Stel ik heb de volgende opbouw van een asp.net pagina:
Deze custom control moet er voor zorgen dat er een 2e form aan m'n body wordt toegevoegd, zodat het geheel er clientside als volgt uit komt te zien:
Het probleem waar ik tegenaanloop is dat ik vanuit de custom control alleen toegang heb tot het gebied binnen Form1. Als ik de HtmlTextWriter uit de Render method pak bijv. kan ik alleen HTML code genereren die direct op de plaats van het custom control in Form1 terecht komt. Ook als ik bijv Page.Form gebruik, kom ik niet verder dan Form1. Ik moet als het ware een niveau omhoog, vanuit mijn custom control gezien.
Page.Body bestaat niet
Een alternatief is het overriden van de Render method van de page zelf, dus een StringWriter pakken.. de base.Render naar de StringWriter laten schrijven, vervolgens met wat kunst en vliegwerk er zelf een Form bij plakken en het resultaat naar de writer van de override sturen. Probleem daarbij is dat ik logica die bij die custom control hoort, uit het control trek. Dat is geen optie.
Er zijn nog meer van dat soort alternatieven, zoals het gebruik van de global.asax of een literal control vlak na de </form> tag, maar daarvoor geldt hetzelfde.
Een eis is dat alle logica binnen het custom control verwerkt zit. Ik heb dus een normale pagina, sleur/pleur daar het control op en voila... clientside een extra form tag
Zonder dat hiervoor per pagina nog zaken aangepast moeten worden.
Iemand enig idee hoe ik dit voor elkaar zou kunnen krijgen ?
HTML:
1
2
3
4
5
6
7
8
| <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"></head> <body> <form id="form1" runat="server"> <custom:control id="customcontrol1" runat="server" /> </form> </body> </html> |
Deze custom control moet er voor zorgen dat er een 2e form aan m'n body wordt toegevoegd, zodat het geheel er clientside als volgt uit komt te zien:
HTML:
1
2
3
4
5
6
7
8
9
10
11
| <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"></head> <body> <form name="form1" method="post" action="page.aspx" id="form1"> ... </form> <form name="form2"> ... </form> </body> </html> |
Het probleem waar ik tegenaanloop is dat ik vanuit de custom control alleen toegang heb tot het gebied binnen Form1. Als ik de HtmlTextWriter uit de Render method pak bijv. kan ik alleen HTML code genereren die direct op de plaats van het custom control in Form1 terecht komt. Ook als ik bijv Page.Form gebruik, kom ik niet verder dan Form1. Ik moet als het ware een niveau omhoog, vanuit mijn custom control gezien.
Page.Body bestaat niet
Een alternatief is het overriden van de Render method van de page zelf, dus een StringWriter pakken.. de base.Render naar de StringWriter laten schrijven, vervolgens met wat kunst en vliegwerk er zelf een Form bij plakken en het resultaat naar de writer van de override sturen. Probleem daarbij is dat ik logica die bij die custom control hoort, uit het control trek. Dat is geen optie.
Er zijn nog meer van dat soort alternatieven, zoals het gebruik van de global.asax of een literal control vlak na de </form> tag, maar daarvoor geldt hetzelfde.
Een eis is dat alle logica binnen het custom control verwerkt zit. Ik heb dus een normale pagina, sleur/pleur daar het control op en voila... clientside een extra form tag
Iemand enig idee hoe ik dit voor elkaar zou kunnen krijgen ?