PPC*_*der 10 c# razor razorengine
我一直试图在我的一个小项目中使用RazorEngine但是当我尝试使用模板布局时无法通过这个错误.
无法编译模板.'object'不包含'Description'的定义,也没有扩展方法'Description'可以找到接受'object'类型的第一个参数(你是否缺少using指令或汇编引用?)
我的设置: 我有这样的模板布局:
<html>
<head>
<title>@Model.Description</title>
</head>
<body>
@RenderBody()
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后是一个如下所示的页面模板:
@{
_Layout = "Layout.cshtml";
}
<h1>@Model.Description</h1>
Run Code Online (Sandbox Code Playgroud)
这是一个测试主要功能,我正在尝试解决这个问题:
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
知道我错过了什么吗?
更新:如果我用带有Description属性的POCO替换动态模型对象,它可以工作.我也尝试过Parse的打字版本
动态
,ExpandoObject,和IDictionary<string, object>,但他们都有同样的错误.
更新: 我在Github上发现这个项目似乎让它以某种方式工作:https: //github.com/mikoskinen/graze/blob/master/src/core/Graze.cs#L174
我认为使用模板服务的重载更合适,Parse该重载采用 aViewBag并ViewBag在您的视图中使用 the 而不是模型。
编辑:
public virtual string Parse(string razorTemplate, object model, DynamicViewBag viewBag, string cacheName)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2844 次 |
| 最近记录: |