2017-06-12 3 views
2

私はRazorEngineを使ってテンプレートに他のファイルを組み込もうとしていますが、ちょっと残念です。私は基本的な作業をしていますが、@Include("somefile.html")をテンプレートに使用したいと考えています。RazorEngineを使ってファイルを含めるには?

これは私が今まで得たものである:

string tpl = @"@Include(""foo.html"");"; 

ResolvePathTemplateManager r = new ResolvePathTemplateManager(new string[] { "html" }); 
var config = new TemplateServiceConfiguration(); 
config.TemplateManager = r; 
var service = RazorEngineService.Create(config); 

var a = service.RunCompile(tpl, "name", null, new { test = "TEMPLATE" }); 

現在の作業ディレクトリがfoo.htmlが配置されているhtml DIRを持って、まだ私はこのエラーを取得する:

Apperently

Could not resolve template name

答えて

1

、パスを解決するときに文字列テンプレートは使用できません。このコードは動作します:

ResolvePathTemplateManager r = new ResolvePathTemplateManager(new string[] { "html" }); 
var config = new TemplateServiceConfiguration(); 
config.TemplateManager = r; 
var service = RazorEngineService.Create(config); 

var a = service.RunCompile("foo.html"); 

foo.htmlに私が使用することができます。

@Include("otherfile.html"); 

を同じディレクトリからファイルを含めるようにします。

+1

FWIWでは、 'ResolvePathTemplateManager'の代わりに単一の' string'引数を取る関数を渡すための 'DelegateTemplateManager'を使用します。その関数の中で、テンプレートを解決したいものは何でも行うことができます。たとえば、文字列テンプレートで動作するかどうかなど、検索するパスの配列があります。 –

関連する問題