我从帖子中获取params列表并创建IDictionaryObj,我将其存储在其中。在调试模式下,我可以看到我传入的所有键/值,它们显示为此expando对象的属性。但是,当我将该对象传递给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'的定义
答案 0 :(得分:0)
猜测你的代码对.ToExpando()
有好处,你可能错过了Linq:
using System.Linq;
答案 1 :(得分:-1)
您尚未显示变量模板。
在RazorEngine中使用ExpandoObject时,即使@model指向ExpandoObject,您也需要确保您的模板没有@model,否则您将获得此异常。
如果模板中有@model,则需要将其删除。