问题描述
我的重构MVC 3应用程序,搬到了一组类似物品的成局部视图,所以我可以保持该模板干燥。由于该件不都具有完全相同的特性,我创建匿名类型是这样的:
VAR模型1 =新的{说明=说明1,消息=消息1}
和它们传递到局部视图,像这样:
@ Html.Partial(_部分,MODEL1)
局部视图,然后尝试基于特定属性的存在使某些块,即
@if(Model.Description!= NULL)
{
@ Model.Description
}
我的问题是,即使我可以看到和执行过程中导航模式
对象在监视窗口,我收到了 RuntimeBinderException
在如果
试验,指出'对象'不包含'ShowApplied
的定义。我可以通过调用获得通过反射值( Model.GetType()的getProperty(ShowApplied)。的GetValue(模型)
),而宁愿使用格式显示在我的code样品。我一直无法找到一个干净的解决方案...
- 我怎么能传递一个匿名类型的对象的局部视图,并直接访问其属性?我觉得有一些简单的我失踪...
- 为什么我能看到,而调试
模式
的属性,而不是从code访问它们?
修改
- 我指定@model动态。
- 使用的接口需要创建非匿名类型,因为作为,
Insights from the comments (thank you) imply I have 2 options, since (as the answer to the linked question points out),
and therefore are inaccessible to the Razor binding engine.
Use
@Html.DisplayFor("amount")
and deal with not having IntelliSense, reference lookups, etc.Create classes that implement a common interface and bind my partial view to that interface.
这篇关于通过匿名类型模型MVC 3管窥的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!