0

dotliquidを使用している .NET Core アプリケーションがあります。オンラインで試してみると、配列内にあるオブジェクトのプロパティをバインドできるようです。同様{{user.tasks[0].name}}に、 wheretaskstaskオブジェクトのコレクションでnameあり、 のプロパティですtask

テンプレートへの入力となる JSON モデルがあります。設計時の JSON 構造がわかりません。だから私はJSON文字列をに変換していますExpandoObject

ただし、配列内にあるオブジェクトのプロパティをバインドすると、これは機能しません。

デモNETミドル

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

1 に答える 1