本文介绍了通过匿名类型模型MVC 3管窥的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的重构MVC 3应用程序,搬到了一组类似物品的成局部视图,所以我可以保持该模板干燥。由于该件不都具有完全相同的特性,我创建匿名类型是这样的:

VAR模型1 =新的{说明=说明1,消息=消息1}

和它们传递到局部视图,像这样:

@ Html.Partial(_部分,MODEL1)

局部视图,然后尝试基于特定属性的存在使某些块,即

@if(Model.Description!= NULL)
    {
        @ Model.Description
    }

我的问题是,即使我可以看到和执行过程中导航模式对象在监视窗口,我收到了 RuntimeBinderException 如果试验,指出'对象'不包含'ShowApplied的定义。我可以通过调用获得通过反射值( Model.GetType()的getProperty(ShowApplied)。的GetValue(模型)),而宁愿使用格式显示在我的code样品。我一直无法找到一个干净的解决方案...


  1. 我怎么能传递一个匿名类型的对象的局部视图,并直接访问其属性?我觉得有一些简单的我失踪...

  2. 为什么我能看到,而调试模式的属性,而不是从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.

  1. Use @Html.DisplayFor("amount") and deal with not having IntelliSense, reference lookups, etc.

  2. Create classes that implement a common interface and bind my partial view to that interface.

这篇关于通过匿名类型模型MVC 3管窥的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-18 10:22