【发布时间】:2012-03-08 01:12:33
【问题描述】:
我从其他各种相关问题here 和here 中了解到,您不能将匿名类型的对象从控制器传递到视图,因为匿名类型是使用 Internal 访问器定义的。视图和控制器代码被编译成不同的程序集,因此尝试使用它会导致此错误...
对象不包含 'foo' 的定义
这很好,我可以接受,虽然一开始很烦人。有足够多的建议解决方法来安抚我。
但是,我认为您仍然可以将匿名类型从视图传递到局部视图,因为它们都是视图,它们将在同一个程序集中编译。
Razor 查看代码...
@Html.Partial("Partial1", new { foo = "Something", bar = "Something else" })
以及“Partial1”的部分视图代码
@model dynamic
<h1>@Model.foo</h1>
<span>@Model.bar</span>
奇怪的是,这个 WAS 在新 MVC 项目的开发开始时工作,但是当我添加更多视图时它停止工作,现在给我上面提到的相同错误。
好像我已经达到了一个阈值,视图和部分视图不再编译到同一个程序集中。但我只是猜测。
我想知道是否有人可以对此有所了解。
【问题讨论】:
-
我确实遇到了这个问题。动力学正在处理部分,但突然停止了。
-
我从来不知道为什么。不得不停止使用动态类型。因为有这么简单的解决方法,我无法证明花更多时间调查它是合理的
-
我遇到了同样的问题!有人找到解释了吗?
-
作为替代方案,您可以传入一个字典对象,如
@Html.Partial("Partial1", new Dictionary<string, string> {{ "var1", "val1" }, { "var2", "val2" }},然后在部分中您可以通过@Model["var1"]引用它
标签: asp.net-mvc razor partial-views anonymous-types