SmartFormat.NETの機能をテストしようとしていますが、ビュー モデル アイテムのリストをフォーマットしようとして問題が発生しています。この交換によると、私が達成しようとしていることは、ネストされたプレースホルダーで可能になるはずです。
私が使用しているテンプレートは次のとおりです。
var smartTemplate = @"
<div>This is the title</div>
<div>model name: {Name}</div>
<div>model description: {Description}</div>
<div>model rating: {Rating}</div>
{ItemList:
<div>{NestedName} has number equal to {Number}</div>
}";
そして私のビューモデル:
public class SimpleTestVM
{
public string Name { get; set; }
public string Description { get; set; }
public int Rating { get; set; }
public NestedSimpleVM[] ItemList { get; set; }
}
public class NestedSimpleVM
{
public string NestedName { get; set; }
public int Number { get; set; }
}
次に、データをフォーマットするために、いくつかの項目のリストでビュー モデルを初期化し、次のコードを使用します。
Smart.Default.AddExtensions(new ListFormatter(Smart.Default));
Smart.Default.AddExtensions(new ReflectionSource(Smart.Default));
var smartResult = Smart.Format(smartTemplate, model);
への呼び出しでFormat
、次のエラーが発生します。
Error parsing format string: Error parsing format string: Could not evaluate the selector "NestedName" at 165
{... includes the template here...}
ソースコードを掘り下げると、SmartFormat はNestedName
セレクターが処理されていないと考えているようで、それがエラーをスローしている理由です。なぜこれを行うのかわかりません。私が知る限り、それは構文に正しく従っています。