繁体   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