Próbowałem użyć RazorEngine w małym projekcie, ale nie mogę ominąć tego błędu, gdy próbuję użyć szablonów.TemplateCompilationError z RazorEngine i Layouts
Nie można skompilować szablonu. "obiekt" nie zawiera definicji " " "Opis" i nie można zastosować metody rozszerzającej "Opis" akceptującej pierwszy argument typu "obiekt" (czy brakuje w nim dyrektywy z użyciem lub odniesienia do zespołu?)
Moja konfiguracja: mam układ szablonu takiego:
<html>
<head>
<title>@Model.Description</title>
</head>
<body>
@RenderBody()
</body>
</html>
a następnie szablon strony, który wygląda tak:
@{
_Layout = "Layout.cshtml";
}
<h1>@Model.Description</h1>
Oto test Główną funkcją Używam spróbować i rysunek to:
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();
}
}
}
Każdy pomysł co mi brakuje?
Aktualizacja: Działa, jeśli zamieniam obiekt modelu dynamicznego na POCO z właściwością Opis. Próbowałem też wpisany wersję Parse z
dynamicznego
, ExpandoObject
i IDictionary<string, object>
ale wszystkie mają ten sam błąd.
Aktualizacja: znalazłem ten projekt na Github, który wydaje się, że praca w jakiś sposób: https://github.com/mikoskinen/graze/blob/master/src/core/Graze.cs#L174
Czy to działa przy użyciu zwykłego POCO jako modelu? –
Tak, ale potrzebuję, aby był dynamiczny. –