在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'的定义

在RazorEngine中使用Expando对象会抛出错误

猜测您的代码适合.ToExpando(),您可能错过了Linq:

using System.Linq;

您还没有显示变量模板

当在RazorEngine中使用ExpandoObject时,你需要确保你的模板没有@model,即使@model指向ExpandoObject,否则你会得到这个异常。

如果你的模板中有@model,你需要删除它

相关文章: