首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试将DotLiquid与c#结合使用

尝试将DotLiquid与c#结合使用
EN

Stack Overflow用户
提问于 2016-02-16 11:23:31
回答 1查看 6K关注 0票数 1

我无法在“http://dotliquidmarkup.org/try-online with C#”中举例说明。我有相同的示例,并尝试使用以下代码执行该示例:

代码语言:javascript
复制
var template = DotLiquid.Template.Parse(myTemplate);
Message.Body = template.Render(DotLiquid.Hash.FromAnonymousObject(user));

其中myTemplate与示例中的完全相同:

代码语言:javascript
复制
<p>{{ user.name | upcase }} has to do:</p>
<ul>
{% for item in user.tasks -%}
  <li>{{ item.name }}</li>
{% endfor -%}
</ul>

但当点击呈现时,我会收到错误:'System.Reflection.TargetParameterCountException‘类型的异常发生在mscorlib.dll中,但在用户代码中没有处理,内部消息是:参数计数不匹配。

我告诉过的数据类型与示例中的相同:

代码语言:javascript
复制
public class User : DotLiquid.Drop
{
    public string Name { get; set; }
    public List<Task> Tasks { get; set; }
}

public class Task
{
    public string Name { get; set; }
}

我创造了这样的物体:

代码语言:javascript
复制
var user = new User
{
    Name = "Tim Jones",
    Tasks = new List<Task>
    {
        new Task { Name = "Documentation" },
        new Task { Name = "Code comments" }
    }
};

我不知道我的代码有什么问题。会感谢任何帮助..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-16 11:45:57

您使用的是Hash.FromAnonymousObject,它需要一个匿名对象(顾名思义)。

因此,传递一个匿名对象:

代码语言:javascript
复制
template.Render(DotLiquid.Hash.FromAnonymousObject(new
        {
            user = new User
            {
                Name = "Tim Jones",
                Tasks = new List<Task>
                {
                    new Task { Name = "Documentation" },
                    new Task { Name = "Code comments" }
                }
            }
        }));

或者,在您的情况下(我还没有测试,但这应该有效):

代码语言:javascript
复制
template.Render(DotLiquid.Hash.FromAnonymousObject(new { user = this.user }));
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35431230

复制
相关文章

相似问题

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