[ASP.NET]Button altijd een postback, daarna validatie.

Pagina: 1
Acties:

  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 28-11 15:28

BlackBurn

One Ring To Rule Them All

Topicstarter
Ik ben bezig met een pagina, waar een aantal velden ingevuld dienen te worden.
Afhankelijk van een aantal keuzes die de gebruiker maakt, worden sommige velden aangevuld.

Aangezien, bijna alle velden verplicht zijn, staan er redelijk wat validation controls op de pagina.
Nu kan ik de button wel zo instellen, dat deze altijd een postback doet (door causesvalidation op false te zetten).
Echter wil ik dat de postback altijd gedaan wordt, zodat evt. velden etc. ook netjes aangevuld worden zoals ik het wil, maar dat daarna een validatie gebeurd en als deze goed wordt afgerond dat er dan actie ondernomen wordt.

Is hier nog een handige methode voor, of`moet ik elke control een voor een checken of deze goed is of niet? Op het internet krijg ik niet echt pagina's hierover gevonden wel over de validation controls, maar niet hoe ik makkelijk kan controleren of ze allemaal goedgekeurd zijn.

Edit: ik denk dat ik net te snel ben. Want zie nu dat de page een methode isValid heeft, even kijken of dit is wat ik zocht. oops :+

[ Voor 7% gewijzigd door BlackBurn op 11-04-2007 16:43 ]

If it is broken, fix it. If it ain't broken, make it better!


  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 28-11 15:28

BlackBurn

One Ring To Rule Them All

Topicstarter
De oplossing was eigenlijk heel simpel, had gewoon beter moeten kijken.

Ik heb het als volgt opgelost, de button heeft CausesValidation op False staan en daar staat de volgende code.

Visual Basic:
1
2
3
4
Page.Validate()
If page.IsValid Then
  'Doe iets
End If

If it is broken, fix it. If it ain't broken, make it better!


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 20-11 21:40

Not Pingu

Dumbass ex machina

Je kunt validation alleen op serverside niveau laten gebeuren met het attribute EnableClientScript="false", ik maak tenminste uit je post op dat je daar het aanvullen van de lege waardes doet.
Daar kun je dan bijv. Page.IsValid of Page.Validate() aanroepen om zelf de validatie te controleren.

edit:
Inmiddels een 2e post bijgekomen :X

Toch lijkt het me handiger om gebruik te maken van de validators, dan hoef je weer wat minder zelf te programmeren en je hebt handige dingen zoals de RegularExpressionValidator ter beschikking.

[ Voor 29% gewijzigd door Not Pingu op 11-04-2007 16:51 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 28-11 15:28

BlackBurn

One Ring To Rule Them All

Topicstarter
Not Pingu schreef op woensdag 11 april 2007 @ 16:50:
Je kunt validation alleen op serverside niveau laten gebeuren met het attribute EnableClientScript="false", ik maak tenminste uit je post op dat je daar het aanvullen van de lege waardes doet.
Daar kun je dan bijv. Page.IsValid of Page.Validate() aanroepen om zelf de validatie te controleren.

edit:
Inmiddels een 2e post bijgekomen :X

Toch lijkt het me handiger om gebruik te maken van de validators, dan hoef je weer wat minder zelf te programmeren en je hebt handige dingen zoals de RegularExpressionValidator ter beschikking.
Het probleem is dat het kan zijn, dat sommige velden de zelfde waardes moeten hebben.
Echter moeten deze velden wel verplicht ingevuld worden. Alleen word de volgende code

Visual Basic:
1
textbox2.text = textbox1.text


alleen uitgevoerd als er ook een postback plaats vind. Vandaar dat ik voor dat ik controleer of de pagina wel "valid" is eerst deze objecten wil bijwerken. Als er een snellere methode is hoor ik dat graag.

Ik maak dus wel gebruik van de verschillende validators alleen worden sommige velden pas ingevuld bij een postback waardoor de validators de pagina anders niet goedkeuren. Misschien dat ik iets over het hoofd zie hoor, kom van classic asp af en dan is dit behoorlijk wennen. :D

If it is broken, fix it. If it ain't broken, make it better!


Verwijderd

BlackBurn schreef op woensdag 11 april 2007 @ 16:58:
[...]


Het probleem is dat het kan zijn, dat sommige velden de zelfde waardes moeten hebben.
Echter moeten deze velden wel verplicht ingevuld worden. Alleen word de volgende code
Daar kun je een compare validator voor gebruiken :)

  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 28-11 15:28

BlackBurn

One Ring To Rule Them All

Topicstarter
Verwijderd schreef op woensdag 11 april 2007 @ 18:19:
[...]


Daar kun je een compare validator voor gebruiken :)
Hmm zo kun je mijn zin inderdaad ook interpeteren, ik bedoelde echter als het verzendadres hetzelfde is, dan moet het veldje adres daar hetzelfde zijn als in het andere veldje.
Echter is dit standaard zo, dus gebeurt er geen postback. (had deze eerst op de radiobutton zitten). Waardoor de bovenstaande code in een onchange weinig nut heeft.

Het is dus niet zo dat een veld hetzelfde ingevuld hoort te worden door de klant, die heb ik ook wel voor de e-mail en daar zit inderdaad een comparevalidator tussen.

If it is broken, fix it. If it ain't broken, make it better!


Verwijderd

BlackBurn schreef op woensdag 11 april 2007 @ 18:34:
[...]


Hmm zo kun je mijn zin inderdaad ook interpeteren, ik bedoelde echter als het verzendadres hetzelfde is, dan moet het veldje adres daar hetzelfde zijn als in het andere veldje.
Echter is dit standaard zo, dus gebeurt er geen postback. (had deze eerst op de radiobutton zitten). Waardoor de bovenstaande code in een onchange weinig nut heeft.

Het is dus niet zo dat een veld hetzelfde ingevuld hoort te worden door de klant, die heb ik ook wel voor de e-mail en daar zit inderdaad een comparevalidator tussen.
Een comparevalidator werkt op een property en niet op user input. Kan dus idd op de Text van een TextBox werken, maar ook op de SelectedText van een RadioListButton of zo :)
Pagina: 1