首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DotLiquid,一些初学者的问题/观察

DotLiquid,一些初学者的问题/观察
EN

Stack Overflow用户
提问于 2017-02-08 10:34:09
回答 1查看 2.2K关注 0票数 1

我正在研究如何使用斑点液替换本地开发的模板代码,我想知道实现目标的最佳方法。

旧代码通常在模板中使用sigils,并与字典一起使用regexes搜索和替换。所以你在模板文件中做了这样的事情:

代码语言:javascript
复制
Specific error: {#ErrorId#}
Error description: {#Description#}
Additional information:{#AdditionalInformation#}

在C#代码中:

代码语言:javascript
复制
Dictionary<string, string> tokensAndValues = new Dictionary<string, string>
{
    {@"ErrorId", errorId},
    {@"Description", description},
    {@"AdditionalInformation", additionalInformation}
};

我偶然发现了dotnetliquid,它看起来相当强大(可能会满足我的需求)。我让它起作用了,但我想问一下,我是否要用正确的方式来做这件事?

看来我不得不声明一个类,即。

代码语言:javascript
复制
public class EmailTemplateInfo : Drop
{
    public string ErrorId { get; set; }
    public string Description { get; set; }
    public string AdditionalInformation { get; set; }
}

然后按以下方式使用:

代码语言:javascript
复制
Template.NamingConvention = new CSharpNamingConvention();
Template template = Template.Parse(templateText);

EmailTemplateInfo emailTemplateInfo = new EmailTemplateInfo
{
    AdditionalInformation = additionalInformation,
    Description = description,                    
    ErrorId = errorId
};

string htmlText = template.Render(Hash.FromAnonymousObject(new {emailTemplateInfo = emailTemplateInfo }));

几个问题:

  1. 这样做对吗?如果是的话,那么我将建议在文档中添加一个演示此功能的内容。
  2. 其次,在我使用的模板中,是否需要像这样限定带有变量名称的占位符? 特定错误:{{emailTemplateInfo.ErrorId}}错误描述:{emailTemplateInfo.Description}}附加的
  3. 我看不出命名约定声明Template.NamingConvention = new CSharpNamingConvention();是如何与它下面的模板变量声明相关联的。是否正在进行某种全局缓存?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-13 13:36:09

  1. 是的,从Drop继承是一种方法。DotLiquid提供的另一种机制是Template.RegisterSimpleType(...) --参见单元测试中的示例。
  2. 是的,您确实需要用变量的名称限定属性名,如您的示例所示。另一种方法是创建一个Hash,其中包含用于AdditionalInformationDescriptionErrorId的顶级键,并将其传递给template.Render(...)。您可以使用Hash.FromDictionary(...)实现这一点,如这里所示。
  3. 命名约定与变量声明没有连接。命名约定仅在解析属性名称时使用。例如,如果使用RubyNamingConvention,则需要在模板中编写{{ emailTemplateInfo.additional_information }}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42110717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档