我有这个html文件,我正在读入内存,然后我想用 firstName 替换 {0} ,所以我想要使用{{1但它似乎不起作用。 到目前为止,这是我的代码:
String.Format()
private async Task SendRegistrationEmail(EmailService emailService, User model)
{
// Get our path
var path = HostingEnvironment.MapPath("/assets/emails/registered/index.html");
// Read our email template
using (var sr = new StreamReader(path))
{
// Read our html
var html = sr.ReadToEnd();
var body = String.Format(html, model.FirstName);
// Send our email
await emailService.SendAsync(model.Email, "Kudos Sports - Registration Complete", body);
}
}
行返回错误说明:
输入字符串的格式不正确
有谁知道为什么?
答案 0 :(得分:1)
您的html输入行包含不允许作为String.Format()
参数的字符,或者您的输入中有另一个{
或}
。例如,如果输入字符串将具有类似" Name = {0} value = {1}"并且你使用String.Format()
只传递1个值 - 你会得到一个例外。
使用更独特的替代模板的解决方案之一,例如%% FirstName %%并使用String.Replace代替。
var replaced = html.Replace("%%FirstName%%", firstName);
答案 1 :(得分:0)
显然html
第二个参数不包含{0}
这样的占位符,或者{1}
没有提供数据的placecolder。
答案 2 :(得分:0)
你能否确保html不包含任何其他{
或}
大括号,例如其中的一些javascript。如果是,则必须在使用String.Format