webForumDet fria alternativet

Få med sig informationen från formulärsidan??

.NETur .NET

25 svar · 823 visningar · startad av MasterIT

Medlem sedan nov. 200055 inlägg
Frågan#1

Hej.
Jag igen, vet..men jag vill veta detta i alla fall. Nu är det så att man fyller i textrutor och själva inskrivningen till databasen sker på exakt samma sida. Jag vill istället att när man fyllt i alla rutor och tryckt på OK-knappen så skickas man till en annan sida som skriver in informationen. Hur gör man detta?? Tack på förhand..

Medlem sedan apr. 20012 266 inlägg
#2

Som i gammla vanliga ASP, använd en form som inte är server kontrollerad och sedan sett action="" till den url som tar hand om postningen. Sedan hämtar du bara värderna från föregående sida med Request.Form["namn"].

Men personligen tycker jag det är smidigare att ha det på samma sida.

Medlem sedan juni 20011 732 inlägg
#3

Precis som Renholm säger så behöver du inte göra två sidor för detta, det är helt onödigt.

Medlem sedan nov. 200055 inlägg
#4

Men grejen är att när du postat så står all text kvar i textrutorna, så man kan hur enkelt som helst spamma sönder databasen genom att trycka på posta-knappen flera gånger. Hur kan jag fixa detta då? Så att "OK"-knappen kanske spärras efter att man tryckt på den en gång på sidan, går det?

Medlem sedan juni 20019 024 inlägg
#5

Ta bort formuläret efter postning. Lägg det i olika paneler eller sätt en cookie på användaren om att denne redan postat etc.

Medlem sedan nov. 200055 inlägg
#6

Hmm, fan det låter svårt :)
Det där med cookie låter iofs lite enklare.. Men finns det någon kodsnutt för detta? Alltså jag sitter med en jäkla bok och lär mig så jag kan inte allt ännu :)

Medlem sedan juni 20019 024 inlägg
#7

Att ta bort formuläret är enklare, faktiskt. ;)

I programkoden:

formpanel.Visible = False

I aspx-filen:

<asp:Panel id="formpanel">
   <form>
   ...
   </form>
</asp:Panel>
Medlem sedan nov. 200055 inlägg
#8

Pace: Men exakt vad i koden indikerar på om man skrivit in eller inte? Om man skriver som du visat nu kommer väl formuläret aldrig visas, eller?

Medlem sedan apr. 20012 266 inlägg
#9

Vill du spara om man anmält sig en längre tid eller bara ta bort formuläret efter användaren klickat på submit?

Medlem sedan nov. 200055 inlägg
#10

renholm: Nä, bara få bort formuläret direkt när man klockat på OK. Sen om man skulle klicka på länken till anmälan igen så finns formuläret där igen. Så vill jag ha det.

Medlem sedan nov. 200055 inlägg
#11

Pace: Kan du svara på min fråga? :)

Medlem sedan juni 20019 024 inlägg
#12

MasterIT skrev:

Pace: Men exakt vad i koden indikerar på om man skrivit in eller inte? Om man skriver som du visat nu kommer väl formuläret aldrig visas, eller?

Vill du hindra användaren från att aldrig mer kunna skriva och skicka formuläret under aktuell session/tidsperiod kan du använda dig av cookies. När texten postats sätts cookien till "blaha". När användaren ska försöka posta igen så kollar man helt enkelt om "blaha" finns. Om så är fallet kan man inte posta.

Alternativt om du vill att användaren inte ska kunna få fram formuläret efter postning så kollar du om sidan postats (IsPostBack) och då tar du bort panelen. Från början ska panelen synas och då får du sätta Visible till True:

Nåt i stil med detta:

If Page.IsPostBack() Then
   panelform.Visible = False
   PostForm()
Else
   panelform.Visible = True
   ShowForm()
End If
Medlem sedan apr. 20012 266 inlägg
#13

Eller lägger du bara panelform.visible = false i den funktion som har hand om det som händer är man klickat på submit.

        void EnterBtn_Click(Object Src, EventArgs E) {
            /* Lägg till i databasen */
            panelform.visible = false;
        }

<asp:button text="Enter" Onclick="EnterBtn_Click" runat=server/>

Medlem sedan nov. 200055 inlägg
#14

Pace: Ok, tack..men vart ska jag lägga if-satsen? Korkad fråga säkert. Ska det ligga inom <script>-taggen eller?

Medlem sedan juni 20019 024 inlägg
#15

Ja precis. renholms variant är att föredra tycker jag!

r) Menat som ett svar till renholm, men det fungerar på MasterITs också! :birp

Medlem sedan nov. 200055 inlägg
#16

renholm: Ok, låter enkelt. Men det fungerade inte.

Public Sub laggtill_Click(ByVal Sender As Object,ByVal e As EventArgs)
Dim cm As OleDbCommand
Dim sMatain As String
panelform.visible = false

Den här kodsnutten ligger precis ovanför INSERT into-koden. Jag får felmeddelandet "name 'panelform' is not declared".

Medlem sedan nov. 200055 inlägg
#17

Sen såklart detta vid formulär-koden:

<table>
<asp:Panel id="formpanel">
<form runat="server">
<tr>
<td><font face="arial" size=2><b><u>Personinformation</b></u></font></td>
... (osv)
</form>
</asp:Panel>
Medlem sedan juni 20019 024 inlägg
#18

Du måste använda runat="server" på Panel-taggen också.

Medlem sedan nov. 200055 inlägg
#19

Pace: Samma fel. "Name 'panelform' is not declared" står det i felmeddelandet. Är det för att panelform.visible-koden är före själva panel-taggen? Det går ju inte på annat sätt? Kolla koden två snäpp ovan :(

Medlem sedan juni 20019 024 inlägg
#20

Fram med hela koden.

137 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)