Ik had een pagina met validators gemaakt, en wou even controleren hoe het 'voelt' als javascript uit staat. Ik wist dat ASP.NET validators eventueel clientside kunnen draaien (gerenderd wroden als Javascript), maar ALTIJD ook serverside werken als je page.validate aanroept.
Dit werkte als ik in de .aspx een validator class aanmaak:
maar als ik hem dynamisch aanmaak in de Page.onLoad:
dan is bij de postBack de IsValid altijd true, wat ik ook invul. De server-side validatie werkt dan dus niet. Ik zag tijdens het debuggen dat dit komt omdat de Page.Validators leeg is op dat moment, zelfs al wanneer op de submitknop geklikt wordt, dus nog voordat de page ge-PostBack-ed is.
Hoe kan dit, dat wanneer ik (naar mijn idee) dynamisch hetzelfde doe als wanneer ik het het statisch doe (in .aspx) het statisch wel werkt en dynamisch niet ?
Ik heb zelfs nog expliciet Validators.Add(vl_postcode) gedaan maar dat maakt ook niet uit.
Dit werkte als ik in de .aspx een validator class aanmaak:
code:
1
| <asp:RequiredFieldValidator id="test" controlToValidate="tekstveld" errorMessage="fout"></asp/RequiredFieldValidator> |
maar als ik hem dynamisch aanmaak in de Page.onLoad:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| if (IsPostBack)
{
Page.Validate();
if (Page.IsValid)
// dingen doen met database
}
else
{
vl_postcode = new RequiredFieldValidator();
vl_postcode.ControlToValidate="postcode";
vl_postcode.ErrorMessage = "kut";
vl_postcode.ID = "ch";
form1.Controls.Add(vl_postcode);
} |
dan is bij de postBack de IsValid altijd true, wat ik ook invul. De server-side validatie werkt dan dus niet. Ik zag tijdens het debuggen dat dit komt omdat de Page.Validators leeg is op dat moment, zelfs al wanneer op de submitknop geklikt wordt, dus nog voordat de page ge-PostBack-ed is.
Hoe kan dit, dat wanneer ik (naar mijn idee) dynamisch hetzelfde doe als wanneer ik het het statisch doe (in .aspx) het statisch wel werkt en dynamisch niet ?
Ik heb zelfs nog expliciet Validators.Add(vl_postcode) gedaan maar dat maakt ook niet uit.