我重构一个MVC 3应用程序,并移动了一组类似项目的成局部视图,这样我可以保持该模板DRY。 由于片并不都具有完全相同的特性,我创建匿名类型是这样的:
var model1 = new { Description = "description 1", Message = "message 1" }
并将它们传递给像这样的局部视图:
@Html.Partial("_Partial", model1)
然后,将局部视图试图基于特定属性,即存在使某些块
@if (Model.Description != null) { @Model.Description }
我的问题是,即使我能看到和浏览Model
执行期间在监视窗口对象,我得到一个RuntimeBinderException
中if
测试状态'object' does not contain a definition for 'ShowApplied'
。 我可以通过调用获得通过反射值( Model.GetType().GetProperty("ShowApplied").GetValue(Model)
),但宁愿用我的代码示例中显示的格式。 我一直无法找到一个干净的解决方案...
- 我怎么能传递一个匿名类型的对象的局部视图,并直接访问它的属性? 我觉得有一些简单的我失踪...
- 为什么我能看到的
Model
,同时调试特性,而不是从代码访问它们?
编辑
- 我指定@model动态。
- 使用的接口需要创建非匿名类型,因为,因为这个答案解释 ,
匿名类型不能被转换为除了任何接口或类型
object
。