Just nu i M3-nätverket
Gå till innehåll

Request.Form


.mixon

Rekommendera Poster

Jamen se! Nu verkar det fungera som det ska.

 

Stort tack för hjälpen PJ, ett superjobb. :thumbsup:

 

[inlägget ändrat 2005-05-19 14:55:31 av .mixon]

Länk till kommentar
Dela på andra webbplatser

  • 1 month later...

Ja, nu har ju mitt formulär fungerat bra sedan jag fick hjälp av PJP. Men nu efter en tids användande så har jag insett att det behövs en kontroll för att se till att formuläret inte skickas iväg med något annat än en e-postadress. Sagt och gjort, jag fixade det såhär:

<asp:RegularExpressionValidator id="RegularExpressionValidator1" runat="server" ControlToValidate="Email_Address" EnableClientScript="False" ErrorMessage="Ogitligt format f&ouml;r e-post address (ex. namn@mittforetag.se)" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">Ogiltig e-postadress</asp:RegularExpressionValidator>

 

Problemet nu är att om jag fyller i något annat värde än en e-postadress i textboxen och klickar på OK så får jag förvisso meddelandet om att det är en ogiltig e-postadress som angivits och det skickas inte iväg något mail till mig, MEN, som svar på sidan får man även informationen att man är registrerad/avregistrerad från vårt register.

 

Är det någon som har en lösning på hur endast felmeddelandet visas?

 

.mixon

 

Länk till kommentar
Dela på andra webbplatser

Hej!

 

Använd Page.IsValid...

 

If Page.IsValid Then

If Registrera.Checked = True Then

lbResult.Text = "Vårt nästa nyhetsbrev kommer att skickas till din e-postadress."

Else

lbResult.Text = "Din e-postadress har strukits från vårt utskicksregister."

End If

End If

 

/PJ

 

Länk till kommentar
Dela på andra webbplatser

Om jag skriver:

[log] Sub Page_Load(sender as Object, e as EventArgs)

If page.isPostback Then

lbResult.Visible = True

If Email_Address.Text.Length > 0 Then

If page.isvalid Then

If Registrera.Checked = True Then

lbResult.Text = "Vårt nästa nyhetsbrev kommer att skickas till din e-postadress."

Else

lbResult.Text = "Din e-postadress har strukits från vårt utskicksregister."

End If

End If

'AutoEmail1.Initiate()

Email_Address.Visible = False

Registrera.Visible = False

Avregistrera.Visible = False

Button.Visible = False

lbIntroText.Visible = False

Else

lbResult.Text = "Du har inte skrivit in någon emailadress!"

End If

ElseIf Request.QueryString("visa") = "skickat"

lbResult.Visible = True

lbResult.Text = "Vårt nästa nyhetsbrev kommer att skickas till din e-postadress."

Email_Address.Visible = False

Registrera.Visible = False

Avregistrera.Visible = False

Button.Visible = False

lbIntroText.Visible = False

Else

lbIntroText.Text = "Varje månad ger vi ut ett nyhetsbrev där vi presenterar nytt material och puffar för någon av våra fotografer." & _

"<p>Skriv in din e-postadress i fältet nedan och markera om du vill registrera " & _

"eller avregistrera dig för nyhetsbrevet. Din e-postadress kommer endast att " & _

"sparas i vårt adressregister för utskick av nyhetsbrevet.<br><br>" & _

"Vi accepterar inte e-postadresser av typen hotmail, spray, yahoo eller liknande.</p>"

End If

If Request.QueryString("do") = "avregistrera" Then

Avregistrera.Checked = True

Else

Registrera.Checked = True

End IF

End Sub[/log]

 

Så får jag följande felmeddelande:

Exception Details: System.Web.HttpException: Page.IsValid cannot be called before validation has taken place. It should be queried in the event handler for a control with CausesValidation=True or after a call to Page.Validate.

Source Error: 


Line 13: 					lbResult.Visible = True
Line 14: 						If Email_Address.Text.Length > 0 Then 
[color="#ff0000"]Line 15: 					If page.isvalid Then[/color]
Line 16: 							If Registrera.Checked = True Then
Line 17: 							lbResult.Text = "Vårt nästa nyhetsbrev kommer att skickas till din e-postadress."

 

[inlägget ändrat 2005-07-11 16:09:16 av .mixon]

Länk till kommentar
Dela på andra webbplatser

Ok!

 

Det stämmer att det inte fungerar på det sättet jag visade. Placera istället hela rutinen som du har i If Page.isPostBack i en egen subrutin. Då fungerar det att använda Page.isValid.

 

Ex...

 

Sub Button_click(sender as Object, e as EventArgs)

If Page.IsValid Then

lbResult.Visible = True

If Email_Address.Text.Length > 0 Then

If Registrera.Checked = True Then

lbResult.Text = "Vårt nästa nyhetsbrev kommer att skickas till din e-postadress."

Else

lbResult.Text = "Din e-postadress har strukits från vårt utskicksregister."

End If

Else

lbResult.Text = "Du har inte skrivit in någon emailadress!"

End If

End If

osv, osv...

End Sub

 

Sedan ändrar du <asp:Button... till

 

<asp:Button id="Button" OnClick="Button_click" runat="server" Text="OK"></asp:Button>

 

/PJ

 

 

 

Länk till kommentar
Dela på andra webbplatser

OK, ändrade koden till nedanstående:

[log] Sub Page_Load(sender as Object, e as EventArgs)

If page.isPostback Then

Sub Button_click(sender as Object, e as EventArgs)

If Page.IsValid Then

lbResult.Visible = True

If Email_Address.Text.Length > 0 Then

If Registrera.Checked = True Then

lbResult.Text = "Vårt nästa nyhetsbrev kommer att skickas till din e-postadress."

Else

lbResult.Text = "Din e-postadress har strukits från vårt utskicksregister."

End If

'AutoEmail1.Initiate()

Email_Address.Visible = False

Registrera.Visible = False

Avregistrera.Visible = False

Button.Visible = False

lbIntroText.Visible = False

Else

lbResult.Text = "Du har inte skrivit in någon emailadress!"

End If

End If

End Sub

ElseIf Request.QueryString("visa") = "skickat"

[/log]

 

Och fick följande felmeddelande:

Compiler Error Message: BC30081: 'If' must end with a matching 'End If'.

Source Error:



Line 10: 		<script language="vb" runat="server">
Line 11: 			Sub Page_Load(sender as Object, e as EventArgs)
[color="#ff0000"]Line 12: 				If page.isPostback Then[/color]
Line 13: 					Sub Button_click(sender as Object, e as EventArgs)
Line 14: 						If Page.IsValid Then

 

Trots att det efter "Sub:en" Button_click kommer en ElseIf sedan en Else och sist en End If för att avsluta If page.isPostBack.

 

Länk till kommentar
Dela på andra webbplatser

Hej igen!

 

Du måste lägga den nya subrutinen utanför Sub Page_Load.

 

Sub Page_Load(sender as Object, e as EventArgs)

 

End Sub

 

Sub Button_click(sender as Object, e as EventArgs)

If Page.IsValid Then

lbResult.Visible = True

If Email_Address.Text.Length > 0 Then

If Registrera.Checked = True Then

lbResult.Text = "Vårt nästa nyhetsbrev kommer att skickas till din e-postadress."

Else

lbResult.Text = "Din e-postadress har strukits från vårt utskicksregister."

End If

Else

lbResult.Text = "Du har inte skrivit in någon emailadress!"

End If

End If

osv, osv...

End Sub

 

/PJ

 

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon
Trots att det efter "Sub:en" Button_click kommer en ElseIf sedan en Else och sist en End If för att avsluta If page.isPostBack.

 

Du kan inte lägga koden utanför sub:en.

 

Länk till kommentar
Dela på andra webbplatser

Men... ok jag kan inte ha en subrutin i en subrutin, det låter ju logiskt men... Den första subrutinen innehåller ju "If page.isPostback"... och det är ju villkoret för att det som ska ligga i subrutinen Button_click... det blir liksom ett moment 22 över det hela då.

 

Här är hela min kod inom <script>-blocket:[log] <script language="vb" runat="server">

Sub Page_Load(sender as Object, e as EventArgs)

If page.isPostback Then

Sub Button_click(sender as Object, e as EventArgs)

If Page.IsValid Then

lbResult.Visible = True

If Email_Address.Text.Length > 0 Then

If Registrera.Checked = True Then

lbResult.Text = "Vårt nästa nyhetsbrev kommer att skickas till din e-postadress."

Else

lbResult.Text = "Din e-postadress har strukits från vårt utskicksregister."

End If

'AutoEmail1.Initiate()

Email_Address.Visible = False

Registrera.Visible = False

Avregistrera.Visible = False

Button.Visible = False

lbIntroText.Visible = False

Else

lbResult.Text = "Du har inte skrivit in någon emailadress!"

End If

End If

End Sub

ElseIf Request.QueryString("visa") = "skickat"

lbResult.Visible = True

lbResult.Text = "Vårt nästa nyhetsbrev kommer att skickas till din e-postadress."

Email_Address.Visible = False

Registrera.Visible = False

Avregistrera.Visible = False

Button.Visible = False

lbIntroText.Visible = False

Else

lbIntroText.Text = "Varje månad ger vi ut ett nyhetsbrev där vi presenterar nytt material och puffar för någon av våra fotografer." & _

"<p>Skriv in din e-postadress i fältet nedan och markera om du vill registrera " & _

"eller avregistrera dig för nyhetsbrevet. Din e-postadress kommer endast att " & _

"sparas i vårt adressregister för utskick av nyhetsbrevet.<br><br>" & _

"Vi accepterar inte e-postadresser av typen hotmail, spray, yahoo eller liknande.</p>"

End If

If Request.QueryString("do") = "avregistrera" Then

Avregistrera.Checked = True

Else

Registrera.Checked = True

End If

End Sub

</script>

[/log]

 

[inlägget ändrat 2005-07-12 14:36:04 av .mixon]

Länk till kommentar
Dela på andra webbplatser

Ungefär så här bör det se ut...

 

<script language="vb" runat="server">

Sub Page_Load(sender as Object, e as EventArgs)

If Not page.IsPostBack Then

lbIntroText.Text = "Varje månad ger vi ut ett nyhetsbrev där vi presenterar nytt material och puffar för någon av våra fotografer." & _

"<p>Skriv in din e-postadress i fältet nedan och markera om du vill registrera " & _

"eller avregistrera dig för nyhetsbrevet. Din e-postadress kommer endast att " & _

"sparas i vårt adressregister för utskick av nyhetsbrevet.<br><br>" & _

"Vi accepterar inte e-postadresser av typen hotmail, spray, yahoo eller liknande.</p>"

If Request.QueryString("do") = "avregistrera" Then

Avregistrera.Checked = True

Else

Registrera.Checked = True

End If

End If

End Sub

Sub Button_click(sender as Object, e as EventArgs)

If Page.IsValid Then

lbResult.Visible = True

If Email_Address.Text.Length > 0 Then

If Registrera.Checked = True Then

lbResult.Text = "Vårt nästa nyhetsbrev kommer att skickas till din e-postadress."

Else

lbResult.Text = "Din e-postadress har strukits från vårt utskicksregister."

End If

'AutoEmail1.Initiate()

Email_Address.Visible = False

Registrera.Visible = False

Avregistrera.Visible = False

Button.Visible = False

lbIntroText.Visible = False

Else

lbResult.Text = "Du har inte skrivit in någon emailadress!"

End If

End If

End Sub

</script>

 

/PJ

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...