【发布时间】:2023-04-05 07:15:01
【问题描述】:
我们正在尝试使用 RazorEngine 和 Webapi 生成模板。如果我在 cshtml 代码中包含部分。抛出异常。有没有其他方法可以做到这一点。
类程序
{
静态无效主要(字符串 [] 参数)
{
var config = 新的 TemplateServiceConfiguration
{
调试 = 真,
CachingProvider = new DefaultCachingProvider(t => { })
};
var service = RazorEngineService.Create(config);
Engine.Razor = service;
service.AddTemplate("layout", @"<!DOCTYPE html>
<html> <head>
<style>
body
{
font-size: .85em;
font-family: 'Trebuchet MS' , Verdana, Helvetica, Sans-Serif;
color: #232323;
background-color: #fff;
}
header, footer, nav, section
{
display: block;
}
</style>
<title>@Model.Name</title>
</head>
<body>
<div>
@RenderSection('section1',false)
</div>
<div id='content'>
@RenderBody()
</div>
</body>
</html>");
service.AddTemplate("template", @"@{Layout = ""layout"";}
<h3>@Model.Title</h3>
@section section1{
<text>sample content</text>}");
var bookList = new BookList()
{
Name = "Madhavi",
Title = "Top 10 books",
Books = new List<string>
{
"Harry poter1",
"Harry poter2",
"Harry poter3",
"The hunger game1",
"Harry poter1",
"The Hobbit",
"Eat Pray Love",
"A Tale of Two Cities",
"The Lion, the Witch and the Wardrobe",
"Think and Grow Rich"
}
};
service.Compile("template", bookList.GetType());
var result = service.Run("template", bookList.GetType(), bookList);
Console.WriteLine("Result is: {0}", result);
}
}
公开课书单 {
public string Name { get; set; }
public string Title { get; set; }
public List<string> Books { get; set; }
}
错误显示
编译模板时出错。 请尝试以下方法来解决这种情况: * 如果问题是关于缺少/无效的引用或多个定义,请尝试加载 手动丢失的引用(在编译的应用程序域中!)或 通过提供您自己的 IReferenceResolver 实现来手动指定您的引用。 有关详细信息,请参阅https://antaris.github.io/RazorEngine/ReferenceResolver.html。 目前,所有参考资料都必须以文件形式提供! * 如果你得到'class'不包含'member'的定义: 尝试另一个模型类型(例如'null'使模型动态)。 注意:您不能使用 typeof(dynamic) 使模型动态化! 或者尝试使用静态而不是匿名/动态类型。 有关错误的更多详细信息: - 错误:(49, 24) 字符文字中的字符过多 编译的临时文件位于(请删除文件夹):C:\Users\madhavi\AppData\Local\Temp\RazorEngine_oeduzlw2.nyw 我们尝试编译的模板是: ------------- 开始 ------------
<!DOCTYPE html>
<html>
<head>
<style>
body {
font-size: .85em;
font-family: 'Trebuchet MS', Verdana, Helvetica, Sans-Serif;
color: #232323;
background-color: #fff;
}
header, footer, nav, section {
display: block;
}
</style>
<title>@Model.Name</title>
</head>
<body>
<div>
@RenderSection('section1',false)
</div>
<div id='content'>
@RenderBody()
</div>
</body>
</html>
-------------结束------------
生成的源代码为:
------------- 开始 ------------
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
//
</auto-generated>
//------------------------------------------------------------------------------
namespace CompiledRazorTemplates.Dynamic {
using System;
using System.Collections.Generic;
using System.Linq;
public class RazorEngine_090e814295334051a2dbe5f2a700d613 : RazorEngine.Templating.TemplateBase<EmailTemplateGeneration.BookList>
{
public RazorEngine_090e814295334051a2dbe5f2a700d613() {
}
public override void Execute() {
WriteLiteral(@"<!DOCTYPE html>
<html>
<head>
<style>
body {
font-size: .85em;
font-family: 'Trebuchet MS', Verdana, Helvetica, Sans-Serif;
color: #232323;
background-color: #fff;
}
header, footer, nav, section {
display: block;
}
</style>
<title>
");
Write(Model.Name);
WriteLiteral("
</title>\r
</head>\r
<body>
\r <div>
\r");
WriteLiteral(" ");
Write(RenderSection('section1',false));
WriteLiteral("\r
</div>\r <div"); WriteLiteral(" id=\'content\'");
WriteLiteral(">
\r");
WriteLiteral(" ");
Write(RenderBody());
WriteLiteral("\r </div> \r
</body>\r
</html>");
}
}
}
-------------结束------------
加载的程序集列表: C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll 加载程序集:C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities\14.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.dll 加载程序集:C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll 加载程序集:C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll 加载程序集:C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Drawing\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll 加载程序集:C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities.Sync\14.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.Sync.dll 加载程序集:C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\14.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll 加载程序集:C:\Users\madhavi\Documents\Visual Studio 2015\TestIntegrationProject\EmailTemplateGeneration\EmailTemplateGeneration\bin\Debug\EmailTemplateGeneration.vshost.exe 加载程序集:C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll 加载程序集:C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Xml.Linq\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.Linq.dll 加载程序集:C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Data.DataSetExtensions\v4.0_4.0.0.0__b77a5c561934e089\System.Data.DataSetExtensions.dll 加载程序集:C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\Microsoft.CSharp\v4.0_4.0.0.0__b03f5f7f11d50a3a\Microsoft.CSharp.dll 加载程序集:C:\WINDOWS\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll 加载程序集:C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Net.Http\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Net.Http.dll 加载程序集:C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Xml\v4.0_4.0.0.0__b77a5c561934e089\System.Xml.dll 加载程序集:C:\Users\madhavi\Documents\Visual Studio 2015\TestIntegrationProject\EmailTemplateGeneration\EmailTemplateGeneration\bin\Debug\EmailTemplateGeneration.exe 加载程序集:C:\Users\madhavi\Documents\Visual Studio 2015\TestIntegrationProject\EmailTemplateGeneration\EmailTemplateGeneration\bin\Debug\RazorEngine.dll 加载程序集:C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll 加载程序集:C:\Users\madhavi\Documents\Visual Studio 2015\TestIntegrationProject\EmailTemplateGeneration\EmailTemplateGeneration\bin\Debug\System.Web.Razor.dll 加载程序集:C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Dynamic\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Dynamic.dll
【问题讨论】:
标签: asp.net-web-api2 razorengine