31. oktober 2006 - 13:35Der er
12 kommentarer og 1 løsning
Session state og ArrayList spørgsmål
Hej, Jeg har en bestillingsprogram, hvor man kan vælge og bestille flere varer. Jeg har brugt Session for at gemme de valgte varer. Der er ikke brugt nogen database. I Global.asax.cs har jeg skrevet: protected void Session_Start(Object sender, EventArgs e) { Session["Cart"] = new ArrayList(); } Så har jeg en oversigtside, hvor man kan se alle varer, som man har valgt. De vises på en Label vha. en ArrayList og foreach statement:
Så til sidst (når man er færdig med at vælge flere varer) klikker man på et kanp og kommer man til en ny side, hvor man skal indtaste sit navn, adresse osv. På denne side generere jeg først de bestilte varer i Page_Load vha. igen en ArrayList (Det ligner det samme som på oversigtssiden) på en Label (lblVis). Det er også OK indtil nu. Men så har jeg på denne side en metode (sendMail) som skal tager indholdet af "lblVis" og sætte den som body af e-mailen ... ... myMail.Body = lblVis.Text; ... ... Og så går det galt. Når jeg klikker på send knappen, som skal sende personlige infos plus indholdet af "lblVis" som indhold af e-mailen, bliver der alle bestillte varer vist 2 gange.
Jeg trot, at fejlen er, at når jeg klikker på send-knappen (eller måske når jeg loader denne side som skal sende e-mailen) bliver "lblVis" genereret og tilføjes til "lblVis" igen, men jeg ved ikke hvordan jeg kan løse dette problem.
Jeg håber meget, at jeg kan få hjælp her på eksperten...
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Hej igen og tak for sidst. Jeg har nu et andet mærkelige problem. Nu sendes selve e-mailen 2 gange!
Metode som sender mail til vareleverandøren og til sig selv som Cc.:
public void btnSend_Click(object sender, System.EventArgs e) { Page.Validate(); if (Page.IsValid) { if (!(chkAccept.Checked)) { lblAccept.Text = "Du skal acceptere betingelser!"; } else { StringBuilder s = new StringBuilder(); s.AppendFormat("\n"); MailMessage myMail = new MailMessage(); myMail.From = txtFrom.Text; myMail.To = "mema@leverandor.dk"; myMail.Cc = txtFrom.Text; myMail.Subject = "Bestilling af Varer"; myMail.Body = "Tak for bestillingen. Der er nu sendt en e-mail til leverandøren vedr. din bestilling og du vil høre snart fra os."+ "\n" + "Navn: " + txtNavn.Text + "\n" + "Adresse: " + txtAdresse.Text + "\n" + "Telefon: " + txtTlf.Text + "\n" + "E-amil: " + txtFrom.Text + "\n\n" + lblVis.Text + "\n\n" + lblBeloeb.Text + "\n"; SmtpMail.Send(myMail); lblAccept.Text = ""; chkAccept.Visible = false; btnSend.Visible = false; nulStil.Visible = false; txtFrom.Enabled = false; txtNavn.Enabled = false; txtAdresse.Enabled = false; txtTlf.Enabled = false; lblBekraeftelse.Text ="Tak for bestillingen. Der er nu sendt en bekræftelse for modtagelse af din bestilling til denne e-mail adresse: " + txtFrom.Text; } } }
Det lyder lidt underligt prøv at lave en Find in files på SmtpMail.Send() og se om der er en logisk fejl med afsendelsen således at den forekommer to gange.
Hej mikkel sommer, Jeg har ikke konfigureret min localhost mailserveren. Dette program kopires og køres på Webserveren, og der er ikke nogen fejl. Det eneste jeg tænker på, er, at her på min sendmail (btnSend_Click) metode findes en fjel. Men hvor? Jeg har prøvet også og skrevet: .... .... myMail.From = txtFrom.Text; myMail.To = "mema@leverandor.dk" + ";" + txtFrom.Text; //myMail.Cc = txtFrom.Text; .... .... Men denne kode sender også mailen 2 gange. Bliver glad at høre fra dig eller andre.
Du må undskylde. Faktisk ser den nu sådan ud: .. .. myMail.From = "noreply@leverandor.dk"; myMail.To = "mema@leverandor.dk" + ";" + txtTo.Text; ..
Koden for hele metoden ser nu sådan ud: --- public void btnSend_Click(object sender, System.EventArgs e) { Page.Validate(); if (Page.IsValid) { if (!(chkAccept.Checked)) { lblAccept.Text = "Du skal acceptere betingelser!"; } else { StringBuilder s = new StringBuilder(); s.AppendFormat("\n"); MailMessage myMail = new MailMessage(); myMail.From = "noreply@leverandor.dk"; //myMail.From = txtFrom.Text; myMail.To = "mem@leverandor.dk" + ";" + txtTo.Text; //myMail.Cc = txtCc.Text; //myMail.Cc = txtFrom.Text; myMail.Subject = "Bestilling af varer"; myMail.Body = Tak for bestillingen. Der er nu sendt en e-mail til leverandøren vedr. din bestilling og du vil høre snart fra os."+ "\n" + "Navn: " + txtNavn.Text + "\n" + "Adresse: " + txtAdresse.Text + "\n" + "Telefon: " + txtTlf.Text + "\n" + "E-amil: " + txtFrom.Text + "\n\n" + lblVis.Text + "\n\n" + lblBeloeb.Text + "\n"; SmtpMail.Send(myMail); lblAccept.Text = ""; chkAccept.Visible = false; btnSend.Visible = false; nulStil.Visible = false; txtFrom.Enabled = false; txtNavn.Enabled = false; txtAdresse.Enabled = false; txtTlf.Enabled = false; lblBekraeftelse.Text ="Tak for bestillingen. Der er nu sendt en bekræftelse for modtagelse af din bestilling til denne e-mail adresse: " + txtTo.Text; } } }
Du spurgte om txtFrom.Text = "mema@leverandor.dk". Mail adressen mema@leverandor.dk er jo en fiktiv e-mail adresse, men i stedet for står der i den egentlige kode min egen e-mail adresse og den eksisterer. Hvis jeg har rigtigt forstået dit spørgsmål?
Det var bestemt så lidt, glæder mig at det virker :)
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.