0

RazorEngine を使用してテンプレートをレンダリングしています (ニュースレターとして使用しています)。RazorEngine 3 (https://github.com/Antaris/RazorEngine) の優れた点は、次を使用できることです。 - テンプレート レイアウト - テンプレートを含める

ただし、これを機能させるには、動的リゾルバー サービスを作成する必要があります。

これにより、完全なテンプレートが解決され、コンパイル済みの RazorTemplate として返されます。

ITemplate rTemplate = service.Resolve(templateId, parameters);

次に、 rTemplate.Run() を実行します

呼び出すもの:

public static string Run(this ITemplate template)
{
    ExecuteContext context = new ExecuteContext();
    return template.Run(context);
}

問題は、これが私のテンプレートをキャッシュしないことです! そして、私は本当にそれらをキャッシュする必要があります。ただし、Razor.Parse(template, model, cacheName) は文字列テンプレートのみを受け入れます。

の解き方?

4

1 に答える 1

0

インスタンスのインスタンスをキャッシュする意味はほとんどありませITemplateん。インスタンスを複数回実行すると、出力に問題が発生する可能性があります。を使用するResolve(name)と、を使用しITemplateResolverてテンプレートコンテンツを検索し、そのテンプレートをコンパイルします。名前を指定すると、その名前に対してテンプレートがキャッシュさTypeれます。その後、、、などを呼び出すとCompile(name)Resolve(name)テンプレートを再度コンパイルするのではなく、既存の名前付きテンプレートタイプが使用されます。

于 2013-01-13T12:39:16.430 に答える