2

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セレクターが処理されていないと考えているようで、それがエラーをスローしている理由です。なぜこれを行うのかわかりません。私が知る限り、それは構文に正しく従っています。

4

1 に答える 1