2017-06-26 13 views
0

現在C#でDotLiquidを使用しようとしていますが、私はあまり理解していない動作を観察しました。私はC#に慣れていないので、私の問題がC#それともDotLiquidであるかどうかは確信できませんので、私にご負担ください。 =)Dotliquidテンプレートレンダリング出力ファイルパス

私は非常に基本的なindex.liquidを持っていますが、これはTableに目的を渡そうとしています。 はじめに、表現を作成するだけでtoString()をオーバーライドしましたが、今度は実際のオブジェクトで作業したいと思っています。テンプレートで作業しようとすると、これは私が何をすべきかです:私はこの新しく作成されたtest.htmlを開いたとき

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()); 
    } 
} 

今、それに含まれるすべては私が何とか正しく私のテンプレートをロードしていないです意味、C:\Path\To\index.liquidです。 Try to use DotLiquid with c# 私はテンプレートを正しくロードしていると思いますが、File.ReadAllText(templatePath));templatePathが正しいファイルを指していることを示しています。

これは私がTemplate.Parse()またはTemplate.Render()について非常に基本的なものを理解していないことを示しています。ソースコードでは私が見逃している洞察を私に提供しないので、うまくいけば、助けてくれます。

答えて

1

index.liquidの内容がなくてもわかりにくいですが、既に修正するべきことが1つあります:Renderを2回呼び、2番目にあなたのオブジェクトがありません。これがうまくいかない場合は、index.liquidのコンテンツを追加するためにあなたの質問を更新してください

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() 
     }))); 
    } 
} 

はこれを試してみてください。

関連する問題