0

我想创建一个带有占位符的 XML 或 HTML 模板,以便在发生异常时在运行时交换异常报告变量。我喜欢到目前为止我所拥有的模板和行为,但目前它们都是硬编码的,太糟糕了。

这是我拥有的代码示例...

'Styling (Outlook does not follow CSS standards >:-( )
body = "<html><head>" & _
        "<style type=""text/css"">" & _
        "   * {font:12px Arial, Helvetica, sans-serif;}" & _
        "   table {border-collapse:collapse;}" & _
        "   table.grid td {padding:0 7px;border:solid #ccc 1px;}" & _
        "   .bold {font-weight:bold;padding-right:12px;}" & _
        "</style></head><body>"

'Partial template
body &= "<table><tr><td class=""bold"">Error:</td><td>" & ex.Message & "</td></tr>" & _
        "<tr><td class=""bold"">Exception:</td><td>" & ex.GetType().FullName & "</td></tr>" & _
        "<tr><td class=""bold"">Source:</td><td>" & ex.Source & "</td></tr>" & _
        "<tr><td class=""bold"">Request Url:</td><td>" & Request.Url.ToString & "</td></tr></table><br />"

注意ex.Message变量等。我想将所有 HTML 代码与每个错误变量的占位符一起移动到一个单独的文件中(XML 或 HTML,取决于推荐的内容,XML 我想像?)。然后加载模板,替换变量并即时发送电子邮件。这样做的最佳做法是什么?

另外,请不要尝试修复我的 CSS,这不是这个问题的目的。Outlook 不遵循标准(看图),这就是我必须这样做的方式。

谢谢。;)

4

1 回答 1

1

我认为你几乎是在正确的道路上。步骤是:

  • 将模板提取到资源文件中(资源扩展名为 .xml,.html 是实际的资源类型)。
  • 用标记替换变量连接;所以会是:(...)<tr><td class="bold">Source:</td><td>{exSource}</td></tr>(...)
  • 为 String 对象创建一个扩展方法以“增强” String.Format,因此您可以执行类似的操作

    ' Load the resourceFile and put content into formattedBody
    Dim formattedBody as String = templateBody.FormatWith(New With{.exSource = ex.Source})
    

关于如何实现的FormatWith,请看这里。这个答案也可能对您有所帮助。

于 2012-08-27T20:39:11.740 回答