尝试在 C# 中使用 DotLiquid
Try to use DotLiquid with c#
我无法使用 C# 在 http://dotliquidmarkup.org/try-online 中执行示例。
我有相同的示例并尝试使用以下代码执行它:
var template = DotLiquid.Template.Parse(myTemplate);
Message.Body = template.Render(DotLiquid.Hash.FromAnonymousObject(user));
其中 myTemplate 与示例中的完全相同:
<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 中,但未在用户代码中处理
并且内部消息是:参数计数不匹配。
我所说的数据类型与示例中的相同:
public class User : DotLiquid.Drop
{
public string Name { get; set; }
public List<Task> Tasks { get; set; }
}
public class Task
{
public string Name { get; set; }
}
然后我创建了这样的对象:
var user = new User
{
Name = "Tim Jones",
Tasks = new List<Task>
{
new Task { Name = "Documentation" },
new Task { Name = "Code comments" }
}
};
我无法弄清楚我的代码有什么问题。
将不胜感激任何帮助..
您正在使用 Hash.FromAnonymousObject
,它需要一个匿名对象(顾名思义)。
所以传递一个匿名对象:
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" }
}
}
}));
或者,在你的情况下(我没有测试过,但这应该有效):
template.Render(DotLiquid.Hash.FromAnonymousObject(new { user = this.user }));
我无法使用 C# 在 http://dotliquidmarkup.org/try-online 中执行示例。 我有相同的示例并尝试使用以下代码执行它:
var template = DotLiquid.Template.Parse(myTemplate);
Message.Body = template.Render(DotLiquid.Hash.FromAnonymousObject(user));
其中 myTemplate 与示例中的完全相同:
<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 中,但未在用户代码中处理 并且内部消息是:参数计数不匹配。
我所说的数据类型与示例中的相同:
public class User : DotLiquid.Drop
{
public string Name { get; set; }
public List<Task> Tasks { get; set; }
}
public class Task
{
public string Name { get; set; }
}
然后我创建了这样的对象:
var user = new User
{
Name = "Tim Jones",
Tasks = new List<Task>
{
new Task { Name = "Documentation" },
new Task { Name = "Code comments" }
}
};
我无法弄清楚我的代码有什么问题。 将不胜感激任何帮助..
您正在使用 Hash.FromAnonymousObject
,它需要一个匿名对象(顾名思义)。
所以传递一个匿名对象:
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" }
}
}
}));
或者,在你的情况下(我没有测试过,但这应该有效):
template.Render(DotLiquid.Hash.FromAnonymousObject(new { user = this.user }));