C# Dotliquid模板渲染输出文件路径
我目前正在尝试在C#中使用DotLiquid,我观察到了一种我不太理解的行为。由于我对C#不是很熟悉,我不能确定我的问题是C#本身还是DotLiquid,所以请耐心等待。) 我有一个非常基本的C# Dotliquid模板渲染输出文件路径,c#,dotliquid,C#,Dotliquid,我目前正在尝试在C#中使用DotLiquid,我观察到了一种我不太理解的行为。由于我对C#不是很熟悉,我不能确定我的问题是C#本身还是DotLiquid,所以请耐心等待。) 我有一个非常基本的索引.liquid,我正试图将表-对象传递给它。 为了入门,我已经重写了toString(),以简单地创建一个表示,现在,我将稍后使用实际对象。尝试使用模板时,我会这样做: public static void createHTML(DataTable table) { string templat
索引.liquid
,我正试图将表
-对象传递给它。
为了入门,我已经重写了toString()
,以简单地创建一个表示,现在,我将稍后使用实际对象。尝试使用模板时,我会这样做:
public static void createHTML(DataTable table)
{
string templatePath = @"C:\Path\To\index.liquid";
var template = Template.Parse(templatePath);
template.Render(Hash.FromAnonymousObject(new
{
table = DataMapper.createTable(table).toString()
});
using (StreamWrite file = new StreamWriter(@"C:\Some\Path\test.html"))
{
file.write(template.Render());
}
}
现在,当我打开这个新创建的test.html
,它包含的全部内容都是C:\Path\To\index.liquid
,这意味着我无法正确加载模板。看着
我本以为我正在正确加载模板,并使用File.ReadAllText(templatePath))
向我显示templatePath
指向正确的文件
这表明我对
Template.Parse()
或Template.Render()
的一些非常基本的东西不太了解,因为源代码无法提供我所缺少的洞察力,所以希望您能帮我解决。如果没有index.liquid
的内容,很难判断,但是已经有一件事需要解决:调用Render
两次,第二次没有对象
试试这个:
public static void createHTML(DataTable table)
{
string templatePath = @"C:\Path\To\index.liquid";
var template = Template.Parse(templatePath);
using (StreamWrite file = new StreamWriter(@"C:\Some\Path\test.html"))
{
file.write(template.Render(Hash.FromAnonymousObject(new
{
table = DataMapper.createTable(table).toString()
})));
}
}
如果这不起作用,请更新您的问题,添加
index.liquid
的内容,希望能避免其他人在这方面被绊倒。输出为文件路径的真正原因是因为Template.Parse(字符串源)需要实际的模板内容,而不是文件路径
为了完成您正在尝试的任务,您需要以以下方式使用它:
Template template = Template.Parse(File.ReadAllText(templatePath));