我无法在“http://dotliquidmarkup.org/try-online with C#”中举例说明。我有相同的示例,并尝试使用以下代码执行该示例:
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" }
}
};我不知道我的代码有什么问题。会感谢任何帮助..。
发布于 2016-02-16 11:45:57
您使用的是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 }));https://stackoverflow.com/questions/35431230
复制相似问题