Avatar billede regurger Nybegynder
05. februar 2007 - 14:27 Der er 9 kommentarer

User Control submit til anden side

Hej

Jeg er for nyligt begyndt med .NET udvikling og står med et begynder-problem mht user controls og submit af form-data til en anden side.

Situationen er denne - 3 elementer:

  Default.aspx
Denne side indeholder kun en user control (WebUserControl) og ikke andet. User controllen har ID="WebUserControl1".

  WebUserControl.ascx
WebUserControl er en simpel kontrol indeholdende en TextBox og en Submit button.

  Destination.aspx
Når man klikker Submit button på user kontrollen submittes til denne side. Det eneste denne side gør er at printe indholdet af TextBox'en ud.


Dette virker helt fint hvis jeg glemmer alt om user controls og bare har en side med en form (Default.aspx), som submitter til en anden side (Destination.aspx). Ingen ben der, indholdet af TextBox'en på Default.aspx siden kan tilgåes vha Request["TextBox1"].

Når jeg putter tekstbox og submit button ind i en user control forplumres sagen lidt... så bliver form parametrene prefixet med ID fra usercontrollen.
Dvs på Destination.aspx skal jeg nu lede efter Request["WebUserControl1$TextBox1"]. Destination.aspx koden er nu pludselig afhængig af også at kende user kontrollens ID på Default.aspx siden, og ikke bare parametrets navn.


Findes der en måde hvor form-data fra en usercontrol bliver submittet som "almindelige" form-data, dvs kan tilgås i Request uden ID-prefix?
Den eneste brugbare workaround jeg har fundet er at lade min usercontrol udfylde en Session-variable med sit ID. Det ID kan så læses på Destination.apx når der Request parametret skal hentes.

Målet er selvfølgelig at User Control'en kan bruges på flere sider, og at disse sider er frit stillet til at give den et ukendt ID efter deres forgodtbefindende.
Avatar billede dr_chaos Nybegynder
06. februar 2007 - 10:47 #1
Hvorfor lader du ikke WebUserControl.ascx håndterer postback ?
I asp.net laver man normalt ikke postback til andre sider ?
Avatar billede regurger Nybegynder
06. februar 2007 - 10:51 #2
I den konkrete situation er "Default.aspx" en side med søgekriterie-input, og "Destination.aspx" er en side der viser resultatet af søgningen. De to sider har nogle begrænsninger der gør det upraktisk at samle både søge-input og resultatvisning på den samme side.
Avatar billede dr_chaos Nybegynder
06. februar 2007 - 11:06 #3
hvad er det for nogle begrænsninger ?
Du kan evt lægge alt din søgning ind i din usercontrol.
Avatar billede regurger Nybegynder
06. februar 2007 - 11:58 #4
Hele setup'et med søgeside og resultatside er et eksisterende setup i "gammeldags" ASP som jeg er i færd med at omskrive til ASP.NET i forb. med et platformskifte for hele sitet - og helst så tæt op af den oprindelige løsning som muligt.
I den nuværende løsning er der 2 sider: simpel søgeside, og kompleks søgeside/resultat. Den simple søgeside poster til resultat-siden - og på resultatsiden er der så en tilsvarende søgefunktion, bare med yderligere mulige kriterier.
Den simple søgeside bruges som content på f.eks. forsider, og tanken er at man går videre til resultat & flere søgemuligheder hvis man benytter sig af denne simple søgning.

I mit eksempel i den oprindelige post har jeg simplificeret det lidt ved kun at have simpel søgeside (Default.aspx) og resultatside (Destination.aspx). I praksis har resultatsiden Destination.aspx også en usercontrol med søgekriterier - resultat-siden poster søgekriterierne til sig selv igen.
Avatar billede dr_chaos Nybegynder
06. februar 2007 - 12:26 #5
hvorfor laver du ikke et multiview på den ene side. Dette kan du så bruge til at vise avanceret søgning og ikke avanceret søgning.
Den løsningsmodel du ligger op til har ikke ret meget med asp.net at gøre.
Den er mere asp agtig.
Du kan lige så godt lave det som asp.net.
Avatar billede regurger Nybegynder
06. februar 2007 - 12:31 #6
Kan godt ske en anden struktur er løsningen, men som udgangspunkt forsøger jeg at holde mig så tæt op af den oprindelige side-opdeling som muligt.

Det kommer også lidt bag på mig at det skulle være "dårlig praksis" at submitte en form til en anden side... det er da en ret stor begrænsning.
Avatar billede dr_chaos Nybegynder
07. februar 2007 - 14:31 #7
Det er ikke nogen begrænsning.
Det er bare mere uoverskueligt og giver rodet "asp" agtig kode.
Hvis du vil bruge det så skal du benytte request form på den måde som du ikke vil.
For at udnytte asp.net skal du lære at tænke langt helt anderledes end man gør i asp.
Avatar billede regurger Nybegynder
07. februar 2007 - 15:00 #8
Hmm... jo-jo - men jeg prøver jo bare at poste en form til en anden side. Og har en helt konkret problemstilling i forb. med at hente parametre fra Request hvis formen er i en Usercontrol istedet for "fladt" på den oprindelige side. Det du så siger er at jeg bare skal nøjes med altid at submitte forms til self?
Det kan jeg ikke rigtig tolke som andet end en begrænsning...
Avatar billede dr_chaos Nybegynder
07. februar 2007 - 18:54 #9
Det er ingen begrænsning.
Som sagt skal du lære at tænke på en anden måde ellers kan man lige så godt bruge asp.
Som sagt bør du lave 2 usercontrols 1 til simpel søgning og 1 til avanceret søgning og så bruge et multiview til at skifte mellem de 2 søgnings visninger.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB