【问题标题】:DotLiquid - Dictionary<string,string> as parameterDotLiquid - Dictionary<string,string> 作为参数
【发布时间】:2015-03-07 19:11:43
【问题描述】:

假设我有以下模板:

您好{{名称}}!欢迎回到 {{ 博客 }}。上次登录日期:{{ date }}。

允许用户同时输入模板和占位符/变量,所以我无法知道占位符是什么样的。

我正在考虑创建这样的东西:

public string Render(string text, Dictionary<string,string> placeholders)
{
    Template template = Template.Parse(text);
    return template.Render(Hash.FromSomething(placeholders));
}

有一个名为 FromDictionary 的方法接受字典,但我不太明白它是如何工作的。另一种选择是 FromAnonymousObject,但我不知道如何将 Dictionary 转换为匿名对象以适应目的。

任何想法将不胜感激!

【问题讨论】:

    标签: c# .net dictionary template-engine dotliquid


    【解决方案1】:

    Hash.FromDictionary 确实是你想要的方法。我认为您非常接近答案-您只需将Dictionary&lt;string, string&gt; 转换为Dictionary&lt;string, object&gt;。 (值是object,因为除了原始类型之外,您还可以在其中包含嵌套对象。)

    public string Render(string text, Dictionary<string,string> placeholders)
    {
        Template template = Template.Parse(text);
        Dictionary<string, object> convertedPlaceholders =
            placeholders.ToDictionary(kvp => kvp.Key, kvp => (object) kvp.Value);
        return template.Render(Hash.FromDictionary(convertedPlaceholders));
    }
    

    (我已将其输入 SO 而没有编译,如有错误,敬请见谅。请告诉我,我会更新答案。)

    【讨论】:

    • 谢谢。我从一开始就不明白并且一直做错的一件事是,在字典中我以以下格式传递密钥:“{{ keyName }}”,而不仅仅是“keyName”。
    猜你喜欢
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多