20. januar 2006 - 01:44Der er
12 kommentarer og 1 løsning
RequiredFieldValidator opfører sig sært
Hejsa,
jeg har lavet et program der kan lave tests ud fra en database, hvor man opretter spørgsmål og angiver, hvilken type svarmuligheder der skal være brug for.
Ud fra DB genererer den siderne med spørgsmålene. Typen af spørgsmål afgører hvilken user control der indsættes, så det er altså en dynamisk generering af kontroller.
Alle kontrollerne har en RequiredFieldValidator, fordi man skal besvare alle spørgsmål for at gå videre.
Problemet er, at enkelte (bestemte) spørgsmål får validatoren til at opføre sig underligt af uvisse årsager. Det sker altid i PostBack, og der sker altid det, at siden ikke genereres fuldt, men kun tegnes halvt. Så viser den fejlmeddelelsen for validatoren, hvad enten man rent faktisk har lavet en fejl eller ej.
Det mystiske er, at den kun fejler på meget få spørgsmål - resten kører fint igennem. Jeg har siddet længe og kigget på det, og der er intet der får de konkrete spørgsmål til at udskille sig.
Jeg genererer kontrollerne med Page.LoadControl, og sætter værdier for ID under hvert kald - også ved PostBack. Kan det være, at jeg kommer til at lave en fejl som vedrører ViewState?
er det de samme spørgsmål den fejler på - og forsvinder fejlen hvis du fjerner dem?
når du skriver at fejlen sker ved postback... betyder det så, at du rent faktisk får submittet din side, som efter at have vendt på serveren viser validators?
Nå ja, og mht postback: umiddelbart ser det ud som om, siden er vendt på serveren. Men eftersom kun noget af siden er renderet (nogle gange næsten det hele, andre gange kun meget lidt), så er det svært at sige hvor meget der egentlig er foregået. Jeg er også lidt usikker mht validatorers brug af client-side og server-side. Noget af det bliver genereret som javaScript, ikke sandt? Og andet ryger til serveren?
Jeg ville stærkt foretrække, at der er så lidt javaScript indblandet som muligt, for det skal helst være kompatibelt med et hvilket som helst system hos klienten.
jo - de bruger en del javascrip SmartNavigation er den indbyggede mulighed asp.net 1.1 for at "bevare siden som den er" ved postback.... kan lave en masse ravage. MainTainScrollPosition er den indbyggede mulighed i asp.net 2.0 for at holde samme position på siden (ligesom SmartNavigation) - den har ikke oplevet ballade med den indtil videre. det med at din side renderes halvt er højst besynderligt... benytter du response.write ell.?
Jeg er ved at skifte til ASP.NET, det er temmelig svært at få overblik over... mht SmartNavigation og MainTainScrollPosition: hvor kan jeg se, om jeg benytter det?
Umiddelbart tror jeg ikke der falder en exception... jeg har ikke bedt den om at ignorere exceptions, ihvertfald. Som tidligere nævnt, så fungerer det fint i Opera, men ikke i IE. Det må være noget med det genererede JavaScript. Kan jeg på en eller anden måde få min RequiredFieldValidator til at køre server-side? Eller skal jeg i så fald til at lege med CustomValidators?
du kan snildt få dem til ikke at udføre valideringen clientside - du kan bare sætte EnableClientScript til false. det ville unægteligt være en overraskelse hvis validatorenes script kørte bedre i opera end i ie ;o det med maintainscrollposition... og smartnavigation angives normalt i pagedirective. mvh
Nå, det virkede ihvertfald at sætte EnableClientScript til false. Det kan jo være, at det er en lokal fejl i min IE. Ikke desto mindre er det egentlig meget godt, at den ikke kører client-script.
Jeg lærte ihvertfald en del. Og tak for hjælpen. Skal jeg ikke lige give dig nogle point?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.