簡體   English   中英

ASP.NET輸入字符串格式不正確

[英]ASP.NET Input string was not in a correct format

我制作了一個控件,用於創建活動的電子邀請。 用戶將他們的信息輸入到文本框中,然后系統收集該信息,將其添加到電子郵件的HTML中,然后發送。

合並所有部分時遇到錯誤。 我的代碼如下。

protected void Button1_Click(object sender, EventArgs e)
 {
    SmtpClient smtpClient = new SmtpClient();
    MailMessage message = new MailMessage();

    MailAddress fromAddress = new MailAddress(YourEmailBox.Text, YourNameBox.Text);

    message.From = fromAddress;

    message.To.Add(FriendEmailBox.Text);
    message.Subject = EmailSubject;
    message.IsBodyHtml = true;
    message.Body = "<html>" + string.Format(EmailBody, YourNameBox.Text, PersonalNoteBox.Text) + "</html>";
    smtpClient.Send(message);

    YourNameBox.Text = YourEmailBox.Text = FriendNameBox.Text = FriendEmailBox.Text = PersonalNoteBox.Text = string.Empty;
    Label1.Text = "Email Successfully sent!";

}

這使我輸入的字符串在此行上的格式錯誤不正確:

message.Body = "<html>" + string.Format(EmailBody, YourNameBox.Text, PersonalNoteBox.Text) + "</body></html>";

你能幫幫我嗎?

為什么不做:

message.Body = string.Format("<html>{0}</html>",EmailBody.Text)

我不明白為什么要將3個參數傳遞給string.Format,例如"<html>" + string.Format("3","4","5") + "</html>"將產生

<html>3</html>

應該是這個嗎?

message.Body = "<html>" + string.Format(EmailBody.Text, YourNameBox.Text, PersonalNoteBox.Text) + "</html>";

(假設EmailBody是某種基於文本的控件,則將.Text添加到EmailBody中)

XaiSoft指出您使用的string.Format()錯誤,請替換:

message.Body =  "<html>" + string.Format(EmailBody, YourNameBox.Text, PersonalNoteBox.Text) + "</html>";

帶有:

message.Body = string.Format(@"<html>{0}<br /><br />{1}<br /><br />{2}</html>",
                             EmailBody, YourNameBox.Text, PersonalNoteBox.Text)

如果YourNameBox.TextPersonalNoteBox.Text是可選的,則在電子郵件末尾只會有4個額外的換行符。 如果這是一個問題,您也可以始終這樣做:

var name = string.IsNullOrEmpty(YourNameBox.Text) 
              ? string.Empty 
              : string.Format(@"<br /><br />{0}", YourNameBox.Text);

var personalNote = string.IsNullOrEmpty(YourNameBox.Text) 
                      ? string.Empty 
                      : string.Format(@"<br /><br />{0}", PersonalNoteBox.Text);

message.Body = string.Format(@"<html>{0}{1}{2}</html>", EmailBody, name, personalNote);

編輯

另外,請注意格式字符串中使用的@符號。 這會將您的字符串視為文字,而忽略任何也會引起問題的轉義字符。

就我而言,String.Replace是替換insiode html字符串中唯一適用於我的東西。



{0}”。替換(“ {0}”,您的值)

我猜想, EmailBody變量不包含的格式項正確數量string.Format工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM