我从各种其他相关问题
here和
here了解到,您不能将匿名类型的对象从控制器传递到视图,因为匿名类型是使用内部访问器定义的. View和Controller代码被编译成不同的程序集,所以试图使用它会导致这个错误…
object does not contain a definition for ‘foo’
这很好,我可以接受,虽然这是令人讨厌的.有足够的建议的解决方法来安抚我.
但是,我以为您仍然可以将匿名类型从视图传递给部分视图,因为它们都是视图,它们将被编译在同一个程序集中.
剃刀查看代码…
@Html.Partial("Partial1",new { foo = "Something",bar = "Something else" })
和“Partial1”的部分视图代码
@model dynamic <h1>@Model.foo</h1> <span>@Model.bar</span>
奇怪的是,这个WAS在开发一个新的MVC项目开始时工作,但是当我添加更多的观点,它刚刚停止工作,现在给我上面提到的错误.
就好像我已经达到一个阈值,视图和部分视图不再被编译到同一个程序集中.但我只是猜测.
我不知道有没有人能够清楚这一点.
解决方法
有关详细信息,请参阅此处的问题和答案:
MVC Razor dynamic model,‘object’ does not contain definition for ‘PropertyName’
基本上,它停止工作的最有可能的原因是因为您在同一个文件夹中有另一个视图,其模型类型不可解析.
使用破碎的模型类型纠正违规视图,清理并重新构建解决方案,并重新工作.