我无法访问Razor模板中的动态对象属性

时间:2011-09-06 08:09:55

标签: .net dynamic razor

我创建了一个动态对象,如下所示:

dynamic myObject = new
{
    DisplayName = "Mahesh"
}; 



Content = Parse("Main", myObject);

debug section

然后我将其解析为Razor模板。但它不起作用,因为对象无法访问其属性。这有什么问题?

提前致谢,

2 个答案:

答案 0 :(得分:3)

我是这样做的,它有效。但我想知道为什么我先做的方式不起作用

dynamic FooterModel = new ExpandoObject();
FooterModel.DisplayName= "Kaplan";

答案 1 :(得分:2)

匿名类型存在一些辅助功能问题,因为dynamic 通过c#provider 尝试尊重辅助功能。不同模块中的匿名类型可访问(并且记住MVC页面通常会编译到不同的模块中),因此没有属性。

然而,IIRC,这实际上是在后来的MVC补丁中修复的 - 我似乎记得在我的本地机器比我们的开发服务器更高的时候点击这个,这意味着:它在更高版本的本地工作,但是失败了你在开发服务器上描述。

ExpandoObject不会遭受这种情况,因为它不使用c#提供程序(它实现了IDynamicMetaObjectProvider),并且没有可访问性的概念(它只是将成员名称映射到字典)。