[ASP.NET] Problematiek met meerdere forms op 1 pagina

Pagina: 1
Acties:

  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Momenteel ben ik bezig met een website die bestaat uit een aantal vaste items, onder andere een Poll en een Postcode zoeker. Dit zijn vaste blokken op de pagina.
Het is dus goed mogelijk dat er 3 verschillende formulieren op 1 pagina staan. Bijv. bij een contact pagina heb ik ook nog een extra contact formulier op de pagina. Nu loop ik hiermee tegen het diverse problem aan:

1. Ik wil het liefst 3 forms voor de aparte items gaan gebruiken, maar dan krijg ik de fout. A page can have only one server-side Form tag. Natuurlijk kan ik ook voor bijv. de poll en de postcode zoeker een form zonder runat=server gebruiken, maar dan werken mijn ASP Controls weer niet. Het control moet in een Form met runat=server staan. Daarbij wil ik soms ook van de VIEWSTATE gebruik maken.

2. Volgens de ASP.NET methode zou ik voor alles 1 form moeten gebruiken en dan via Click events moeten bepalen op welke button wordt gedrukt. Dit geeft ook problemen:
- Als je op enter drukt triggert weet de browser niet welke van de 3 submit buttons hij moet triggeren.
- Er is een bug in IE waardoor click events niet altijd goed werken.

Hoe gaan jullie om met deze problematiek, welke oplossingen en workarounds zijn er?

It’s nice to be important but it’s more important to be nice


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 11:14

mulder

ik spuug op het trottoir

- Als je op enter drukt triggert weet de browser niet welke van de 3 submit buttons hij moet triggeren.
Dan moet je de default button instellen.
- Er is een bug in IE waardoor click events niet altijd goed werken.
Nog nooit last van gehad.

oogjes open, snaveltjes dicht


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
[quote]Don Facundo schreef op maandag 21 november 2005 @ 10:32:
[...]
Dan moet je de default button instellen.
[...]
Wist niet dat je op webforms ook een defaultbutton kon hebben. Maar goed ik heb even gezocht en op
http://www.devx.com/vb2themax/Tip/18846 zie ik dat ze dit met JavaScript realiseren.
Maar ik kan niet zeggen dat ik echt gecharmeerd ben van deze oplossing. Het is weer extra complexiteit toevoegen aan je webpagina terwijl je met 3 verschillende forms deze issue helemaal niet hebt.

It’s nice to be important but it’s more important to be nice


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

De restrictie van één serverform per pagina vind ik ook heel irritant als je bijv. een zoekform, inlogform, gastenboek etc. op 1 pagina wilt hebben. Je kunt natuurlijk wel meerdere clientside forms op een pagina zetten en die formwaarden op de ouderwetse manier afvangen. Dan heeft je submitbutton in je postcodezoeker wel de focus als je het postcode-veld aanklikt.

Er kunnen echter geen client forms in een serverform, dus dat kan problemen opleveren voor de inrichting van je pagina. Ik heb ook een keer het probleem gehad dat zo'n 'apart' formuliertje wel middenin het serverform stond. Dit heb ik toen uit het serverform geplaatst en met CSS absoluut op zijn plek gezet. Geen mooie oplossing.

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


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Gunp01nt schreef op maandag 21 november 2005 @ 11:19:
De restrictie van één serverform per pagina vind ik ook heel irritant als je bijv. een zoekform, inlogform, gastenboek etc. op 1 pagina wilt hebben. Je kunt natuurlijk wel meerdere clientside forms op een pagina zetten en die formwaarden op de ouderwetse manier afvangen. Dan heeft je submitbutton in je postcodezoeker wel de focus als je het postcode-veld aanklikt.
Ja, maar dan ga je eigenlijk weer terug naar af, dus naar Classic ASP. Geen ViewState meer en nog belangrijker geen ASP WebControls meer. Mijn poll gebruikt dus een ASP:Radiobuttonlist en die werkt alleen in een serverside form.
Er kunnen echter geen client forms in een serverform, dus dat kan problemen opleveren voor de inrichting van je pagina. Ik heb ook een keer het probleem gehad dat zo'n 'apart' formuliertje wel middenin het serverform stond. Dit heb ik toen uit het serverform geplaatst en met CSS absoluut op zijn plek gezet. Geen mooie oplossing.
Forms nesten is zoiezo geen goed idee. Volgens mij mag dat ook niet volgens de HTML standaarden. Maar als je nog andere creatieve oplossingen, workarounds of nuttige links hebt hoor ik het graag. Ben blij dat ik niet de enige ben die loopt te stooien met ASP.NET WebForms ;)

Edit:
Werken forms nog steeds hetzelfde in Visual Studio 2005 en ASP.NET 2.0?

[ Voor 6% gewijzigd door pjonk op 21-11-2005 11:58 ]

It’s nice to be important but it’s more important to be nice


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 11:14

mulder

ik spuug op het trottoir

Ik dacht dat default property van een button was, maar nee dus. Hier staat een serverside oplossing tussen. In 2.0 zal dit wel mogelijk zijn.

Verder heb je absoluut geen meerdere forms nodig in ASP.NET. Als je een zoek en een inlog op 1 pagina na wilt maak je er gewoon controls van en die vangen keurig de events af. Je moet je Classic ASP kennis gewoon even 'vergeten' ;)

oogjes open, snaveltjes dicht


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 01-04 20:36

Not Pingu

Dumbass ex machina

Don Facundo schreef op maandag 21 november 2005 @ 12:03:
Verder heb je absoluut geen meerdere forms nodig in ASP.NET. Als je een zoek en een inlog op 1 pagina na wilt maak je er gewoon controls van en die vangen keurig de events af. Je moet je Classic ASP kennis gewoon even 'vergeten' ;)
Hij heeft het over de knoppen aan de clientside. Als je eerste form een gastenboek-teken form is en je tweede een inlogform, dan wordt de event van de eerste submit knop afgevuurd als je in het tweede form op enter drukt.
pjonk schreef op maandag 21 november 2005 @ 11:55:

Forms nesten is zoiezo geen goed idee. Volgens mij mag dat ook niet volgens de HTML standaarden. Maar als je nog andere creatieve oplossingen, workarounds of nuttige links hebt hoor ik het graag. Ben blij dat ik niet de enige ben die loopt te stooien met ASP.NET WebForms ;)

Edit:
Werken forms nog steeds hetzelfde in Visual Studio 2005 en ASP.NET 2.0?
Forms in ASP.NET 2.0 werken nog steeds hetzelfde (zij het dat o.a. problemen met validators opgelost zijn dmv. de validationgroups). Er zijn echter wel 3rd party oplossingen voor meerdere server forms, ik meen dat Paul Wilson (www.wilsondotnet.com) daar iets voor gemaakt had. De betrouwbaarheid van die dingen is echter altijd een onzeker punt: kun je er nog wel alles mee dat je met out-of-the-box serverforms kunt?

[ Voor 4% gewijzigd door Not Pingu op 21-11-2005 12:12 ]

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


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Gunp01nt schreef op maandag 21 november 2005 @ 12:07:
Hij heeft het over de knoppen aan de clientside. Als je eerste form een gastenboek-teken form is en je tweede een inlogform, dan wordt de event van de eerste submit knop afgevuurd als je in het tweede form op enter drukt.
Precies ;)
@Don Facundo ik heb achter mijn user controls gewoon ServerClick event handlers hangen die prima werken, zei het alleen als je met de muis op een knop klikt.
Forms in ASP.NET 2.0 werken nog steeds hetzelfde (zij het dat o.a. problemen met validators opgelost zijn dmv. de validationgroups). Er zijn echter wel 3rd party oplossingen voor meerdere server forms, ik meen dat Paul Wilson (www.wilsondotnet.com) daar iets voor gemaakt had. De betrouwbaarheid van die dingen is echter altijd een onzeker punt: kun je er nog wel alles mee dat je met out-of-the-box serverforms kunt?
Ik zal die link eens gaan checken. Ik vind ASP.NET fantastisch, maar jammer dat server forms niet echt doordacht werken. Ik begrijp het idee van ASP.NET: Gebruik de WinForms programming interface ook voor WebForms. Theoretisch klopt het allemaal, maar in de praktijk loop je tegen dit soort problemen aan.

It’s nice to be important but it’s more important to be nice

Pagina: 1