Bir metin (HTML değil) e-postasında kullanılacak bir dize gövdesi oluşturmak için stringbuilder kullanmaya çalışıyorum. Bununla birlikte, bazı satırlar (dinamik verileri dahil ettiğim, yeni bir satır eklenmez, ancak bazı satırlarda hedeflenen şekilde çalışır.Neden StringBuilder.AppendLine, bazı dizelerle yeni bir satır eklemiyor?
Stringbuilder sınıfını kullanırken eksik olan temel bir şey var mı yoksa daha temel bir işlem var mı? bunun söz konusu olmalıdır
aşağıdaki kodu:?
sbUser.AppendLine("Please find below confirmation of your registration details. If any of these details are incorrect, please email [email protected]");
sbUser.AppendLine();
sbUser.AppendLine("Selected event : " + ContentPage.FetchByID(int.Parse(ddlEvent.SelectedValue)).PageTitle);
sbUser.AppendLine("Date of event : " + thisEvent.EventStartDate.ToString("dd MMM yyyy"));
sbUser.AppendLine("==============================================================");
sbUser.AppendLine();
(ContentPage ve thisEvent ses altı (v2) kullanılarak inşa özel sınıflar PageTitle dizesinin bir çıkış türüdür.)
bu olsun bir çıkış olarak:
Please find below confirmation of your registration details. If any of these details are incorrect, please email [email protected]
Selected event : My Event Date of event : 16 Sept 2012 ==============================================================
Görüldüğü gibi, koddaki 3. satırdan sonra her şey her şey bir satıra gider.
sbRR.AppendLine("First name : " + txtFirstname.Text.Trim());
sbRR.AppendLine("Surname : " + txtSurname.Text.Trim());
etc,
ve bu doğru ayrı hatlar üzerinde görüntülenir:
ancak, daha kod aşağı i kullanma. Bunun neden olduğunu göremiyorum.
sbUser.AppendLine("Selected event : " + ContentPage.FetchByID(int.Parse(ddlEvent.SelectedValue)).PageTitle + Environment.NewLine);
sbUser.AppendLine("Date of event : " + thisEvent.EventStartDate.ToString("dd MMM yyyy") + Environment.NewLine);
aşağıdaki çıktıyı üretir:
Selected event : My Event
Date of event : 16 Sept 2012
==============================================================
E aşağıdaki kodu ilave edilmesi bu gibi
mailMessage.Body = sbUser.ToString() + sbRR.ToString();
olarak oluşmaktadır, sanırım 2 yeni satır ekledi (AppendLine ve Environment.NewLine). Veriyi doğrudan veritabanından bir stringbuilder'a çekmenin satır sonuyla uğraştığı görülüyor. Veritabanı çekildikten sonra metin eklesem bile, hala bir satırda kalır.
StringBuilder.Append("blah"+Environment.NewLine)
yapıyor GÜNCELLEME
çalışır ve .AppendLine("blah"+<database content>)
çalışmıyor bu yüzden ancak hala anlayamıyorum, doğru sonucu verir.
SbUser.ToString() çağrısından sonra dizeye bir şey mi yapıyorsunuz? –
PageTitle'nin metin akışını kesebilecek garip değerler döndürme ihtimali var mı? Veya çağrılan kod geçici olarak kültürü veya satırsonu ayarını değiştirir mi? Başka bir deyişle, "olayım" kodunu kodlarsanız, sorun devam eder mi? ** edit ** cevabınızı düzenlediğiniz şüpheyi doğrular;) –
StringBuilder'ı varsayılan kapasite ile oluşturmaya çalışabilir misiniz? Örneğin: 'StringBuilder sb = new StringBuilder (1024);' – Steve