C# Dotliquid模板渲染输出文件路径

C# Dotliquid模板渲染输出文件路径,c#,dotliquid,C#,Dotliquid,我目前正在尝试在C#中使用DotLiquid,我观察到了一种我不太理解的行为。由于我对C#不是很熟悉,我不能确定我的问题是C#本身还是DotLiquid,所以请耐心等待。) 我有一个非常基本的索引.liquid,我正试图将表-对象传递给它。 为了入门,我已经重写了toString(),以简单地创建一个表示,现在,我将稍后使用实际对象。尝试使用模板时,我会这样做: public static void createHTML(DataTable table) { string templat

我目前正在尝试在C#中使用DotLiquid,我观察到了一种我不太理解的行为。由于我对C#不是很熟悉,我不能确定我的问题是C#本身还是DotLiquid,所以请耐心等待。)

我有一个非常基本的
索引.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));