String.Format,包含一个包含html的字符串

时间:2017-09-12 12:22:59

标签: c# sql sql-server database asp.net-web-api

我正在开发一个从数据库中提取电子邮件模板然后发送它们的应用程序。

数据库中的模板有正文有html,我怎么能在这个字符串上做一个String.Format?目前我收到错误,说输入字符串的格式不正确。

    <!DOCTYPE html>
<html>
<head>
</head>
<body>
    <style>
        .container {
            font-size: 0;
        }

            .container.p.span {
                /*font-size: 16px;**/
            }

        .titleTextSpan {
            color: white;
            width: inherit;
            height: inherit;
            font-family: sans-serif, Arial;
            font-size: 20px;
            display: table-cell;
            vertical-align: middle;
            text-align: left;
        }
    </style>
    <div class="container" style="width:700px;">
        <div style="display:inline-block;">
        </div>
        <div style="width:700px;height:44px; background:#36A6DE;display:table;">
            <span class="titleTextSpan">PRODUCT NAME</span>
        </div>
        <div style="font-size:10pt;margin-left:20px;font-family:Arial, sans-serif;color:#4D4C4C">
            <br />
            Dear {16},
            <br /><br />
            Thank you for your request for PRODUCT NAME, which is now with your organisation approver for authorisation.
            <br />
            Call details:
            <br />
            Call number: {17}
            <br />
            Organisation Approver: {22} {23}
            <br />
            <br />
            If you have any other questions please do not hesitate to contact us.<br />
            Please email <a href="EMAIL">EMAIL</a> or contact your local team lead.
            <br />
            <br />
            Kind Regards,
            <br />
            <br />
            Intelligence Point Administrator
        </div>
        <div style="margin-top:20px;width:700px;height:10px; background:#36A6DE;display:table;"></div>
        <div style="width:700px;height:20px; background:#F1F1F1;display:table;"></div>
        <div style="width:700px;height:50px;background:#15314D;text-align:center;display:table">
            <span style="font-size:9pt; vertical-align:middle;color:#36A6DE; font-family:Arial, sans-serif;display:table-cell;">
                We welcome your comments, feedback and suggestions
            </span>
        </div>
        <div style="font-size:10pt; vertical-align:middle;color:black; font-family:Arial, sans-serif;text-align:center;">
            <b>Email:</b><a href=""> </a> | <b>Website:</b> <a href=""></a>
        </div>
    </div>
</body>
</html>

2 个答案:

答案 0 :(得分:2)

您需要使用{}转义html中的每个{{}},因为String.Format会将它们视为占位符,而不是您的css规则。顺便说一下,在实际使用String.Format

之前,您可以使用String.Replace替换任何其他字段的值

答案 1 :(得分:0)

基本上,这里的问题是模板中的css部分。因为那些卷曲的支撑。为此模板设置两个表将是最干净的方法。 一个用于样式的表和另一个用于纯HTML的表。

然后检索数据库中的css和html作为单独的变量。

在使用您的值格式化html变量之后,然后将css插入其中。

 example:
 var cssFile = your css from db
 var htmlFile = your formatted html string.
 var whereToInsert = htmlFile.IndexOf("<head>") +6;
 htmlfile = htmlFile.Insert(whereToInsert, cssFile)