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.
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.
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.
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.
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.
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...
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.
Synes godt om
Ny brugerNybegynder
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.