Asp.net mvc Razor引擎电子邮件模板错误对象类型无法转换为目标
我想使用RazorEngine创建电子邮件,但当我的应用程序在服务器上运行时返回错误 堆栈跟踪: RazorEngine.Compilation.CrossAppDomainCleanUp.CleanCupulper.Init(AppDomain 域,IPrinter打印机)位于 RazorEngine.Compilation.CrossAppDomainCleanUp.InitHelper.CreateHelper() 在 RazorEngine.Compilation.ExecutionContextLessThread.FuncConv1.Call(布尔值 数据)在 RazorEngine.Compilation.ExecutionContextLessThread.CallHelperSafeHelper2.AsAction() 在 RazorEngine.Compilation.ExecutionContextLessThread.CallHelperSafeHelper2.AsContextCallback(对象 国家)在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext、ContextCallback回调、对象状态、布尔值 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext、ContextCallback回调、对象状态、布尔值 在 System.Threading.ExecutionContext.Run(ExecutionContext executionContext、ContextCallback回调、对象状态)位于 RazorEngine.Compilation.ExecutionContextLessThread.DefaultCallFunc[O](Func1 f) 位于RazorEngine.Compilation.CrossAppDomainCleanUp..ctor(AppDomain toWatch,IPrinter打印机)位于 RazorEngine.Compilation.CrossAppDomainCleanUp.CreateInitial()位于 System.Lazy1.CreateValue()---来自上一个 引发异常的位置---at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()位于 System.Lazy1.getValue()位于 RazorEngine.Compilation.CrossAppDomainCleanUp.getCurrentCleanup()位于 RazorEngine.Compilation.CrossAppDomainCleanUp.RegisterCleanup(字符串 项目,布尔值(默认值)位于 RazorEngine.Templating.InvalizangCachingProvider.c.b50(字符串 项目)在 RazorEngine.Templating.InvalidingCachingProvider.CacheTemplate(ICompiledTemplate)无效 模板,ITemplateKey templateKey)位于 RazorEngine.Templating.DefaultCachingProvider.CacheTemplate(ICompiledTemplate 模板,ITemplateKey templateKey)位于 RazorEngine.Templating.RazorEngineService.CompileAndCacheInternal(ITemplateKey 键,类型(modelType)位于 RazorEngine.Templating.RazorEngineService.GetCompiledTemplate(ITemplateKey 键,类型modelType,Boolean compileOnCacheMiss)位于 RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey, TextWriter编写器,类型modelType,对象模型,DynamicViewBag 查看包)在 RazorEngine.Templating.DynamicWrapperService.RunCompile(ITemplateKey 键,TextWriter编写器,类型modelType,对象模型,DynamicViewBag 查看包)在 RazorEngine.Templating.RazorEngineServiceExtensions.cDisplayClass160.b_u0(TextWriter (作者)在 RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(操作1 与作者)在 RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService 服务、字符串名称、类型modelType、对象模型、DynamicViewBag 查看包)在project.Email.CreateEmail(列表1提供) 消息:无法将对象类型转换为目标 这是我的代码,其中是错误Asp.net mvc Razor引擎电子邮件模板错误对象类型无法转换为目标,asp.net-mvc,email,templates,Asp.net Mvc,Email,Templates,我想使用RazorEngine创建电子邮件,但当我的应用程序在服务器上运行时返回错误 堆栈跟踪: RazorEngine.Compilation.CrossAppDomainCleanUp.CleanCupulper.Init(AppDomain 域,IPrinter打印机)位于 RazorEngine.Compilation.CrossAppDomainCleanUp.InitHelper.CreateHelper() 在 RazorEngine.Compilation.ExecutionCo
private string CreateEmail(List<EmailOffer> offers)
{
string template=File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "Views\\EmailTemplate\\Email.cshtml"));
return Engine.Razor.RunCompile(template, "templateKey", null, offers);
}
这是模板电子邮件(cshtml文件)
@model IEnumerable
@foreach(模型中的var项目)
{
@项目.标题
}
我怎样才能解决这个问题?非常感谢。是否需要指定要传递给RunCompile方法的模型类型 e、 g.根据本文件:
根据您提供的信息,您能得到的最佳答案是:“修复您的应用程序。这将解决您的问题”。我收到了相同的错误。不知道原因是什么。单元测试很好,有什么建议吗?我也面临同样的问题。
public class EmailOffer
{
public string Title{ get; set; }
public string UrlImage { get; set; }
}
@model IEnumerable<project.Models.EmailOffer>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
@foreach (var item in Model)
{
<table style="margin-bottom: 10px;margin-top: 25px;background-color: #f3f3f3;padding: 10px;">
<tr>
<td style="max-width: 128px;padding-right: 10px;height: auto;min-width: 64px;width: 20%;"><img src="@item.UrlImage" style="max-width: 100%;" /></td>
<td>
<h2 style="line-height: 1.1;margin: 10px;font-weight: 500;font-size: 16px;">@item.Title</h2>
</td>
</tr>
</table>
}
</body>
</html>
private string CreateEmail(List<EmailOffer> offers)
{
string template=File.ReadAllText(Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "Views\\EmailTemplate\\Email.cshtml"));
return Engine.Razor.RunCompile(template, "templateKey", typeof(List<EmailOffer>), offers);
}
@foreach (project.Models.EmailOffer item in Model)
{
...
}