[asp.net] Validations willen niet meer

Pagina: 1
Acties:

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
Ik heb een pagina waarin een paar velden met wat RequiredFieldValidators en een CustomValidator staan. Maar opeens werken die validators niet meer. Ik kan zien dat postbackken prima gaat; de waardes in de textboxes en dropdownlists raakt ie niet kwijt.

Ik heb ontdekt waardoor het komt dat de validators niets meer doen: het form heb ik in een panel gegoten die ik vervolgens @runtime in een TableCell zet. Als ik dat laatste niet doe, werkt het formuliertje perfect, doe ik het wel wel dan werken alle validators dus niet. Postback gaat prima, maar de validatie wordt niet uitgevoerd (getest met een breakpoint in die CustomValidator).

Ik zet dat panel met de velden enzo in die TableCell met een simpele Controls.Add(...), dus je zou zeggen dat van die panel alleen de parent verandert. Maar kennelijk gebeurt er nog meer vreemds... Ook EnableViewState overal op true of op false zetten heeft geen enkel effect. Weet iemand hoe dit kan en hoe het op te lossen is?

日本!🎌


  • whoami
  • Registratie: December 2000
  • Nu online
Controleer dan eens of de ControlToValidate property van je validator wel nog ingevuld is, en het op de juiste control staat ingesteld.
Die controls hebben nl. een andere owner (het panel) gekregen, terwijl die validator die control niet in het panel maar op de webform zelf zal zoeken.

https://fgheysels.github.io/


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
ControlToValidate klopt nog gewoon. Maar zowel de validators als de controls stonden al op het panel, maar het euvel begint pas als ik dat hele panel in een TableCell zet.

/edit
Zelfs als ik (na toevoegen aan die TableCell) "FindControl(rqdField.ControlToValidate)" in het immediate-window plak, komt daar de juiste control uit.

[ Voor 36% gewijzigd door _Thanatos_ op 18-11-2003 12:57 ]

日本!🎌


Verwijderd

misschien nog een extra Page.IsValid aanroepen!?

  • whoami
  • Registratie: December 2000
  • Nu online
Verwijderd schreef op 18 november 2003 @ 16:03:
misschien nog een extra Page.IsValid aanroepen!?
Dat zal het probleem niet oplossen, want een Page.IsValid geeft gewoon aan of de validatie gelukt is of niet.
Het probleem is hier echter dat de validatie blijkbaar helemaal niet meer gebeurd.

(Tenzij de validatie natuurlijk wel nog gebeurd, maar niet meer opgevangen wordt.... Je kan idd ff proberen te checken of de pagina valid is bij een postback).

[ Voor 20% gewijzigd door whoami op 18-11-2003 16:11 ]

https://fgheysels.github.io/


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
Na een postback is IsValid gewoon true, terwijl dat dus niet zo hoort te zijn als ik alle veldjes leeg laat.

Maargoed, als de validatie wel zou plaatsvinden, dan zou ie moeten stoppen op mijn breakpoint in de CustomValidator_Validate methode. En daar komt ie gewoon nooit.

日本!🎌


Verwijderd

_Thanatos_ schreef op 18 november 2003 @ 17:08:
Na een postback is IsValid gewoon true, terwijl dat dus niet zo hoort te zijn als ik alle veldjes leeg laat.

Maargoed, als de validatie wel zou plaatsvinden, dan zou ie moeten stoppen op mijn breakpoint in de CustomValidator_Validate methode. En daar komt ie gewoon nooit.
roep misschien de page.validate() functie aan.
Zorg ervoor dat die web_config dir online staat op server

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Ik heb zo een donkerbruin vermoeden dat je probleem zit in de 'racing conditions'.

Het zou me niets verbazen als je hebt:

1. Controleer of validators geldig zijn
2. Voeg validators toe
3. Indien geldig, voer rest code uit.

Ik denk dat je, als je deze volgorde ziet, wel kan raden waar het probleem zit; het aantal validators bij punt 1 is 0; deze zijn dus ook allen geldig.

Vervolgens voeg je die validators toe (welke niet meer gecontroleerd worden).
Hierdoor wordt drie dus ook uitgevoerd.

Zou ook kunnen dan 2 en drie omgekeerd zijn.

Oftewel: Let op met dynamische controls en het probleem is dat je te laat bent.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Stewie!
  • Registratie: September 2001
  • Laatst online: 10:07

Stewie!

Keen must die!

oeps

[ Voor 93% gewijzigd door Stewie! op 18-11-2003 19:14 ]


Strava: https://www.strava.com/athletes/149347154


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
roep misschien de page.validate() functie aan.
Dat kan ik wel es proberen, maar dat gebeurt toch al als je op een knop drukt waarvan CausesValidation op true staat?
Zorg ervoor dat die web_config dir online staat op server
Heu? web_config dir? server? Nouja, vast wel :+

gorgi_19: Ik voeg de validators niet in runtime toe. Ik maak alles in designtime, alleen in runtime maak ik een tabel waar ik alles wat ik in designtime gemaakt heb, in een cel zet. Ik zet er dus zegmaar een tabel "omheen".

日本!🎌


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
Misschien leuk om te weten dat ik het gevonden heb. Gorgi_19 zat aardig in de richting, maar het probleem zat toch in een andere hoek.

Voordat ik het panel aan de tabel toevoeg, werkt alles goed. Maar pas erna, is de Validators collection van de Page leeg. Dus de oplossing is om de Validators tijdelijk in een aparte collection te bewaren en nadat ik het panel aan de tabel toevoeg, de Page.Validators weer opbouwen.

Maar dan nog, het is toch vaag dat die collection opeens leeg is...

日本!🎌

Pagina: 1