流阅读器上的C#String.Format

时间:2015-10-09 12:41:55

标签: c#

我有这个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); } } 行返回错误说明:

  

输入字符串的格式不正确

有谁知道为什么?

3 个答案:

答案 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

之前将其转义