[Situatieschets]
/Default.aspx
Plaats voor de standaard layout (header) en een Menu. Menuopties wijzigen aan de hand van de menukeus die je maakt. Dit gebeurd via een Switch (). In die switch worden de UserControls aangeroepen. Dit gaat prima en de controls worden netjes aangroepen en getoont zoals het hoort.
/FrontEnd/Projects.ascx
De Projects.ascx is een UserControl waar een overzicht staat. Dit overzicht veranderd zodra er een keus gemaakt wordt in een DropDown menu.
De DropDown veroorzaakt een PostBack, nu werkt dit prima als stand-alone pagina en komen de juiste values uit het DropDown menu (via DropDown.SelectedValue).
Probleem is nu dat als ik de Projects.ascx daadwerkelijk als Usercontrol aanroep (in Default.aspx), hij bij een PostBack de DropDown menu waarden niet meer ziet. Het is alsof de ViewState niet doorkomt.
Dit is maar een voorbeeld, maar het werkt praktisch hetzelfde.
Nu zie ik dat een usercontrol normaal gezien iets anders wordt aangeroepen. In de HTML zetten ze bijvoorbeeld;
En dan ergens midden in de pagina
Ik heb dit getest en werkt inderdaad. Enige nadeel is dat dit niet variabel genoeg is voor wat ik wil. Is het mogelijk in de Code behind ook zoiets te zetten zodat de pagina weet waar de ViewState naartoe moet?
/Default.aspx
Plaats voor de standaard layout (header) en een Menu. Menuopties wijzigen aan de hand van de menukeus die je maakt. Dit gebeurd via een Switch (). In die switch worden de UserControls aangeroepen. Dit gaat prima en de controls worden netjes aangroepen en getoont zoals het hoort.
code:
1
2
3
| case 0:
UserControl = Page.LoadControl("~/FrontEnd/Projects.ascx");
break; |
/FrontEnd/Projects.ascx
De Projects.ascx is een UserControl waar een overzicht staat. Dit overzicht veranderd zodra er een keus gemaakt wordt in een DropDown menu.
De DropDown veroorzaakt een PostBack, nu werkt dit prima als stand-alone pagina en komen de juiste values uit het DropDown menu (via DropDown.SelectedValue).
Probleem is nu dat als ik de Projects.ascx daadwerkelijk als Usercontrol aanroep (in Default.aspx), hij bij een PostBack de DropDown menu waarden niet meer ziet. Het is alsof de ViewState niet doorkomt.
code:
1
2
3
4
5
6
7
8
| if (Page.IsPostBack)
{
Parameter = DropDown.SelectedValue;
}
else
{
Parameter = 1;
} |
Dit is maar een voorbeeld, maar het werkt praktisch hetzelfde.
Nu zie ik dat een usercontrol normaal gezien iets anders wordt aangeroepen. In de HTML zetten ze bijvoorbeeld;
code:
1
| <%@ Register TagPrefix="uc1" TagName="header" Src="header.ascx" %> |
En dan ergens midden in de pagina
code:
1
| <uc1:header id="Header1" runat="server"></uc1:header> |
Ik heb dit getest en werkt inderdaad. Enige nadeel is dat dit niet variabel genoeg is voor wat ik wil. Is het mogelijk in de Code behind ook zoiets te zetten zodat de pagina weet waar de ViewState naartoe moet?