dotliquidを使用している .NET Core アプリケーションがあります。オンラインで試してみると、配列内にあるオブジェクトのプロパティをバインドできるようです。同様{{user.tasks[0].name}}
に、 wheretasks
はtask
オブジェクトのコレクションでname
あり、 のプロパティですtask
。
テンプレートへの入力となる JSON モデルがあります。設計時の JSON 構造がわかりません。だから私はJSON文字列をに変換していますExpandoObject
。
ただし、配列内にあるオブジェクトのプロパティをバインドすると、これは機能しません。
public class Program
{
public static void Main()
{
// this does not work
var modelString = "{\"States\": [{\"Name\": \"Texas\",\"Code\": \"TX\"}, {\"Name\": \"New York\",\"Code\": \"NY\"}]}";
var template = "State Is:{{States[0].Name}}";
Render(modelString,template);
//this works
modelString = "{\"States\": [\"Texas\",\"New York\"]}";
template = "State Is:{{States[0]}}";
Render(modelString,template);
}
private static void Render(string modelString, string template)
{
var model = JsonConvert.DeserializeObject<ExpandoObject>(modelString);
var templateModel = Hash.FromDictionary(model);
var html = Template.Parse(template).Render(templateModel);
Console.WriteLine(html);
}
}