RazorEngine使用匿名对象RuntimeBinderException

时间:2013-05-24 14:47:30

标签: razor razorengine

我在模板解决方案中使用RazorEngine。我 为我的模型数据使用匿名对象。代码:

        string template = @"
            Name: @Model.name
            @foreach(var person in @Model.People) {
                <row>
                    <column header=""Name"" width=""5cm"">@person.Name</column>
                    <column header=""Age"" width=""5cm"">@person.Age</column>
                </row>
            }";

        var personList = new List<object>();
        personList.Add(new { Name = "Bob", Age = 25 });
        personList.Add(new { Name = "Peter", Age = 30 });

        var model = new { name = "Henry", People = personList };

        string result = Razor.Parse(template, model);  

我收到一个RuntimeBinderException('object'不包含'Name'的定义。)

任何人都可以帮助我吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

  

在我看来,具有内部属性的匿名类型是一个糟糕的.NET框架设计决策。

     

这是一个快速而好的扩展来解决这个问题,即通过立即将匿名对象转换为ExpandoObject。

请参阅此question的回答:https://stackoverflow.com/a/5670899/544283