私の小さなプロジェクトで RazorEngine を使用しようとしましたが、テンプレート レイアウトを使用しようとすると、このエラーを回避できません。
テンプレートをコンパイルできません。'object' には 'Description' の定義が含まれておらず、タイプ 'object' の最初の引数を受け入れる拡張メソッド 'Description' が見つかりませんでした (using ディレクティブまたはアセンブリ参照がありませんか?)
私のセットアップ: 次のようなテンプレート レイアウトがあります。
<html>
<head>
<title>@Model.Description</title>
</head>
<body>
@RenderBody()
</body>
</html>
次に、次のようなページ テンプレートを作成します。
@{
_Layout = "Layout.cshtml";
}
<h1>@Model.Description</h1>
これは、これを試して理解するために使用しているテスト Main 関数です。
static void Main(string[] args)
{
// Configuration for RazorEngine
var config = new TemplateServiceConfiguration
{
EncodedStringFactory = new RawStringFactory(),
Resolver = new DelegateTemplateResolver(name =>
{
var file = name;
var content = File.ReadAllText("Templates/" + file);
return content;
})
};
// Try to render output using Razor
using (var service = new TemplateService(config))
{
string template = File.ReadAllText("Templates/Default.cshtml");
dynamic model = new ExpandoObject();
model.Description = "This is a test";
string result = service.Parse(template, model);
Console.WriteLine(result);
if (Debugger.IsAttached)
{
Console.ReadLine();
}
}
}
私が見逃しているものはありますか?
更新:動的モデル オブジェクトを説明プロパティを持つ POCO に置き換えると機能します。型付きバージョンの Parse も試しました
動的
、ExpandoObject
、およびIDictionary<string, object>
しかし、それらはすべて同じエラーがあります。
更新: Github でこのプロジェクトを見つけたので、何とか機能するようです: https://github.com/mikoskinen/graze/blob/master/src/core/Graze.cs#L174