在RazorEngine中使用Expando对象会抛出错误
本文关键字:出错 错误 对象 Expando RazorEngine | 更新日期: 2023-09-27 18:10:55
我从帖子中获取参数列表并创建我存储此的IDictionaryObj。在调试模式下,我可以看到我传入的所有键/值,它们显示为这个扩展对象的属性。但是,当我将该对象传递给RazorEngine的解析方法时,它会抱怨所提供的任何属性都不存在。我哪里做错了?
dynamic expando = new ExpandoObject();
var templateModel = expando as IDictionary<String, object>;
templateModel["To"] = email.To;
templateModel["From"] = email.From;
templateModel["Message"] = email.Body;
var templateData = HttpUtility.ParseQueryString(extraParams);
foreach (var property in templateData.AllKeys)
{
templateModel[property] = templateData[property];
}
var mailBody = Razor.Parse(template, templateModel.ToExpando());
最后一行抛出以下错误:
System.Dynamic。ExpandoObject'不包含'From'的定义
猜测您的代码适合.ToExpando()
,您可能错过了Linq:
using System.Linq;
您还没有显示变量模板
当在RazorEngine中使用ExpandoObject时,你需要确保你的模板没有@model,即使@model指向ExpandoObject,否则你会得到这个异常。
如果你的模板中有@model,你需要删除它