【问题标题】:Is there a better .NET template system than XSLT?有没有比 XSLT 更好的 .NET 模板系统?
【发布时间】:2010-03-06 08:01:40
【问题描述】:

我正在创建一个需要向用户发送各种电子邮件的 Web 应用程序。我不想在应用程序中硬编码电子邮件的内容,而是想使用存储在磁盘上的模板并用实际数据替换其中的标记(例如“你好,%%FirstName%%!”)。我有一些创建 XSLT 模板的经验,但由于数据不是自然地采用 XML 格式,这可能不是最合适的。 .NET 中有更好的模板工具吗?

请注意,我更喜欢语言内置的,但我也会考虑附加组件。

谢谢,

格雷厄姆

【问题讨论】:

  • 我认为没有。大多数时候,开发人员使用令牌,但用 String.Replace 或 StringBuilder.Replace 替换它们。我认为这是有道理的,因为使用 xslt 或任何其他解决方案的唯一考虑因素是,它们对更改的灵活性如何?因为这是要考虑的主要问题
  • 看看 Spark,.NET 中很棒的模板工具

标签: asp.net email templates


【解决方案1】:

我个人使用过 Spark。它是一个易于使用的文本模板库(以下是 Spark 语法示例)

<var names="new [] {'alpha', 'beta', 'gamma'}"/>
<for each="var name in names">
  <test if="name == 'beta'">
    <p>beta is my favorite.</p>
    <else/>
    <p>${name} is okay too I suppose. 
  </test>
</for>

它甚至还附带了电子邮件文本模板的示例代码,您可以在 github 上查看。

【讨论】:

  • 你的意思是spark-view-engine吗?
  • 是的,就是这个。如果需要,您也可以直接使用模板引擎。
【解决方案2】:

您可能想看看MVCContrib。他们有一个电子邮件模板系统IEmailTemplateService,它使用视图来呈现实际的电子邮件消息,这使您可以访问许多功能,包括不同的视图引擎。如果您不在 MVC 环境中,您仍然可以从中提取一些有用的技巧。

【讨论】:

    【解决方案3】:

    我为此使用了 NVelocity,我发现它非常灵活且易于使用。它不仅允许您替换令牌,而且还包括某种编程语言,例如for 条件 (if) 和循环 (for, foreach)。

    original project 似乎已经死了,但有一个由Castle project 维护的分叉。

    当然还有很多其他的替代模板库(stringtemplate 似乎很流行),你可以看到 in this question 我前段时间问过。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-16
      • 1970-01-01
      • 2021-04-14
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多