ASP.net c # sostituire stringa non lavora
-
27-09-2019 - |
Domanda
// Build email link
confirmLink = Master.siteDomain + "/newsLetter.aspx?action=confirm&e=" + emailAddress + "&code=" + verCode;
using (SqlCommand cmd = new SqlCommand("SELECT newRegEmailBody, newRegEmailSubj FROM tblSiteSettings WHERE (isActive = 1)", Master.cn))
{
SqlDataReader rdr = cmd.ExecuteReader();
if (rdr.Read())
{
emailBody = rdr[0].ToString();
emailSubj = rdr[1].ToString();
}
rdr.Close();
}
emailBody.Replace("[CONFIRMATION_LINK]", confirmLink);
emailer.sendEmail(emailAddress, Master.noReplyEmail, emailSubj, emailBody);
Tutto sembra funzionare bene, tranne il corpo è ancora mostrando con [CONFIRMATION_LINK]
nel testo, tutte le idee?
Soluzione
Le stringhe sono immutabili. operazione String generalmente tornare nuove istanze della stringa. Prova questo:
emailBody = emailBody.Replace("[CONFIRMATION_LINK]", confirmLink);
Altri suggerimenti
Il Replace
metodo restituisce un nuova corda aggiornato. È necessario assegnare i risultati della chiamata Replace
torna a emailBody
:
emailBody = emailBody.Replace("[CONFIRMATION_LINK]", confirmLink);
Stringhe in C # sono immutabili, nel senso che non possono essere modificati una volta che sono istanziati se non espressamente indicato un'altra stringa. Quello che succede è che si sta chiamando "sostituire" senza alcuna variabile per ricevere la stringa che restituisce.
Cambia il secondo all'ultima riga con questo codice:
emailBody = emailBody.Replace("[CONFIRMATION_LINK]", confirmLink);
E 'perché Sostituire non modificare la variabile emailBody
. Esso restituisce la stringa risultante. In questo caso, avreste bisogno di:
string bodyToSend = emailBody.Replace("[CONFIRMATION_LINK]", confirmLink);
emailer.sendEmail(emailAddress, Master.noReplyEmail, emailSubj, bodyToSend);