Avatar billede orca Nybegynder
27. juli 2002 - 11:28 Der er 25 kommentarer og
2 løsninger

Problem med form PostBack

Hej alle.

Jeg har lavet en CustomValidator i min form, som tjekker om et givent
brugernavn er ledigt. Siden formen ligger i, er en include fil, som bliver
inkluderet i default.asp som ligger i en anden mappe end include filen.
Problemet er at formen ikke submitter til default filen, men derimod til
include filen selv. Det resulterer jo i at jeg kun får vist include filen,
uden indholdet i default filen. Så hvordan får jeg formen til ikke at poste
til selve siden den ligger i, men til den URL den er på?

Mvh Mark
Avatar billede cms Nybegynder
27. juli 2002 - 16:36 #1
Måske der var hjælp at hente her:

ms-help://MS.NETFrameworkSDK/cpref/html/frlrfSystemWebUIHtmlControlsHtmlFormMembersTopic.htm
Avatar billede jakobandersen Nybegynder
27. juli 2002 - 17:06 #2
Hvorfor ligger du ikke formen i en kontrol istedet for i en include fil?
Avatar billede odegaard Nybegynder
29. juli 2002 - 08:15 #3
Og hvorfor ligger du det i en asp-fil når dette forum jo omhandler aspx-filer ?
Avatar billede orca Nybegynder
29. juli 2002 - 08:27 #4
odegaard -> Det var en svipser, den ligger selvfølgelig i default.aspx ;)
Avatar billede odegaard Nybegynder
29. juli 2002 - 09:21 #5
ah ok... men gør som moonduck skriver: Lav det som en kontrol istedet. det kræver ikke andet end få ændringer, og så er det også mere fleksibelt.
Avatar billede orca Nybegynder
29. juli 2002 - 10:06 #6
Jeg har prøvet at læse lidt op på det, men jeg fatter ærligt talt ikke hvad de skriver i ASP.NET bogen. Kan du anbefale nogle links som forklarer det?

Mvh Mark
--
www.improve.dk
Avatar billede jakobandersen Nybegynder
29. juli 2002 - 10:12 #7
Avatar billede odegaard Nybegynder
29. juli 2002 - 10:26 #8
Smid følgende i toppen af din include-fil, og omdøb den til minkontrol.ascx
<%@ Import Namespace="System.Data" %>
<%@ Control Language="VB" %>

Herefter tilføjer du i toppen af din default.aspx følgende:
<%@ Register TagPrefix="orca" TagName="minForm" src='minkontrol.ascx' %>

Når du så vil indsætte din form blandt html-koden skriver du blot:
<orca:minForm ID="MyCustomValidator" runat="server" />

Hvis du tilføjer public variabler i din kontrol i en kode-sektion (præcis som i aspx-sider), kan du sætte deres værdi fra dit tag. f.eks.
<orca:minForm minVariabel=FALSE ID="MyCustomValidator" runat="server" />

Dette er dog en lidt ekstra simpel metode som f.eks. ikke husker state (selvfølgelig medmindre værdien er hardcodet i tag'et som i ovenstående eksempel). Jeg bruger det dog ofte når jeg lige nemt skal kunne f.eks. tænde/slukke for en knap, eller ændre en tekst/farve.
Avatar billede orca Nybegynder
29. juli 2002 - 11:12 #9
Tak for svarene, nu fik jeg smidt formen i en user control, men problemet er her stadig.

Siden der indeholder kontrollen tilgås vha denne url: http://localhost/?Content=users/create - Her inkluderer default.aspx filen create.aspx i mappen users.

Når så jeg poster min form (nu i kontrollen improve:CreateUserForm) så loader den siden http://localhost/content/users/create.aspx?Content=users/create - Altså bliver den ikke loadet i default.aspx, og derfor ser den jo helt forkert ud. Altså er mit problem ikke løst.

Gør jeg noget forkert?

Mvh Mark
Avatar billede odegaard Nybegynder
29. juli 2002 - 11:28 #10
så må du have hardcodet navnet create.aspx.
Der er jo ikke nogen fil der hedder create.aspx mere, så hvor skulle serveren kende denne fil fra? Din kontrol skulle jo nu gerne hedde create.ascx (usercontrols skal have efternavnet ascx)
Avatar billede orca Nybegynder
29. juli 2002 - 11:35 #11
create.aspx filen findes stadig - default.aspx inkluderer filen create.aspx, som inkluderer kontrollen ctrl_create.ascx :)
Avatar billede jakobandersen Nybegynder
29. juli 2002 - 11:38 #12
Så bruger du jo også stadig include, lav create aspx som en control
Avatar billede odegaard Nybegynder
29. juli 2002 - 11:38 #13
Men du skulle jo ikke inkludere noget mere. Istedet for at inkludere, skulle du jo lave en kontrol.
Avatar billede jakobandersen Nybegynder
29. juli 2002 - 11:40 #14
Odegaard>> Det er frygtelig som vi er enige :-)
Avatar billede orca Nybegynder
29. juli 2002 - 11:44 #15
Jeg kan ikke lave create.aspx som en user kontrol pga opbygningen af mit site. Default.aspx _skal_ loade en aspx side. Derfor lavede jeg en aspx side som loadede kontrollen, men det var vist ikke godt nok :)
Avatar billede odegaard Nybegynder
29. juli 2002 - 11:47 #16
Moonduck>> jeps.. du var jo lige 4 sekunder hurtigere end mig
Avatar billede odegaard Nybegynder
29. juli 2002 - 11:49 #17
aspx-sider renderer jo en postback tilbage til sig selv. Dette går galt når du inkluderer den i en anden. Derfor bruger du usercontrols. Jeg har svært ved at se hvorfor du ikke bare kan benytte ctrl_create.ascx direkte ind i din default.aspx side.
Det du forsøger kan jo tilsyneladende ikke lade sig gøre, hvorfor du måske skal tænke i retning af en mere fleksibel løsning.
Avatar billede orca Nybegynder
29. juli 2002 - 11:52 #18
Dette er den vigtigste del af min default.aspx side:

                                    If Len(Request("Content")) > 0 Then
                                        If Right(Request("Content"), 1) <> "/" Then
                                            Server.Execute("content/" & Request("Content") & ".aspx")
                                        Else
                                            Server.Execute("content/" & Request("Content") & "default.aspx")
                                        End If
                                    Else
                                        Server.Execute("content/default.aspx")
                                    End If

Jeg tror det forklarer hvorfor jeg ikke kan loade user control'en direkte... Jeg må tænke lidt over hvordan jeg kan løse det...
Avatar billede orca Nybegynder
29. juli 2002 - 12:02 #19
Lige et tillægsspørgsmål, jeg går ikke ud fra at jeg kan inkludere User Controls dynamisk? (For så ville problemet være løst)
Avatar billede odegaard Nybegynder
29. juli 2002 - 12:28 #20
Du kan jo slukke og tænde for dem fra din kode. F.eks. MinKontrol.Visible=False

Men du bliver nødt til at have dem beskrevet i toppen af din kode, og et tag nede i HTML'en. Men det ser jeg nu heller ikke noget problem i.
Avatar billede jakobandersen Nybegynder
29. juli 2002 - 12:37 #21
Du kan vel bare sætte begge dine controls ind of så lave din If sætning om til have nogle properties som bestemmer indholdet.

Hvis du importerer filer med forretningslogik ved hjæp ah en parameter fra bruger (Request objektet) er din applikation "tænkt" forkert.

PS: Lige en lille note, du skal bruge Request.Params( "Content" ) og ikke Request() det giver lidt i performance
Avatar billede orca Nybegynder
29. juli 2002 - 12:57 #22
odegaard -> Det bliver et problem når jeg har over 50 sider (og antallet stiger) som skal kunne inkluderes. Det ender jo med en gigantisk if sætning, som jeg ikke ønsker.

moonduck -> Ud fra dit råd kan jeg vel lave en User Control som tager en enkelt parameter. Denne User Control inkluderer så den fil den har fået som parameter. På den måde vil mine filer stadig blive inkluderet, men i User Control'en, det bør vel løse problemet?

>Hvis du importerer filer med forretningslogik ved hjæp ah en >parameter fra bruger (Request objektet) er din applikation "tænkt" >forkert.
Hvad lægger du i "filer med forretningslogik"?

Mvh Mark
Avatar billede jakobandersen Nybegynder
29. juli 2002 - 13:29 #23
Filer der udfører noget, hvis det blot var ren HTML/tekst der var i filerne ville du aldrig have løbet ind i problemet. Men du har tilsyneladende lagt noget ASP.NET kode i include filen, og det er ikke så smart.

Fordelen ved .NET er netop den klare opdeling af logik og præsentation.

Hvis du blot inkluderer filerne fra Controllen vil de jo stadig poste til sig selv. Kan vi evt. få lov til at se indholdet af en af de filer problemet er med?
Avatar billede orca Nybegynder
29. juli 2002 - 13:46 #24
Her er filen jeg har problemerne med: http://www.improve.dk/content/users/create.txt (i skal nok vælge vis kilde).

Jeg har endnu ikke flyttet Page_Load og CheckUsername over i en codebehind fil, men det vil formentligt heller ikke løse mit problem.

Denne fil bliver som sagt inkluderet i default.aspx (eller i en control i default.aspx, hvis det hjælper).

Mvh Mark
Avatar billede orca Nybegynder
29. juli 2002 - 20:25 #25
Jeg besluttede mig for at slippe af med problemerne og lave siden i et popup vindue i stedet (som faktisk er blevet federe end før :)).

Jeg siger mange tak for al den hjælp i har givet, og håber at i er tilfredse med 50/50 :)

Mvh Mark
--
www.improve.dk
Avatar billede odegaard Nybegynder
29. juli 2002 - 20:43 #26
>Jeg besluttede mig for at slippe af med problemerne og lave siden
>i et popup vindue i stedet (som faktisk er blevet federe end før :)).
Sådan går det faktisk godt og vel altid, når man beslutter sig for at droppe første indskydelse, og tænker alternativt.
Tillykke med "det fede" og takker for pointene.
Avatar billede orca Nybegynder
29. juli 2002 - 20:44 #27
Hehe, tak :)
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