我有一个网址http://www.asp.net/mvc/overview/views/dynamic-v-strongly-typed-views
他们创建了一个非强类型视图,但在视图顶部引用了@model dynamic
。
但其余代码看起来像普通的强类型视图。任何人都可以告诉我MVC中动态和强类型视图之间的区别是什么。
何时应该使用动态视图。在需要动态视图的情况下讨论示例?
答案 0 :(得分:2)
不同之处在于动态视图不会强制执行编译时类型检查(绑定到属性等)。您可以命名并绑定所需的任何属性。在运行时,如果它在模型中找不到它,那就是当你收到错误时。 It's the same as the dynamic keyword in the language
至于为什么或何时使用它,一般来说,不要。这是一种解决方法。编写一个包装类,编写DTO,编写一个适配器,有很多方法可以使一个强类型对象绑定到。实现接口或其他东西。
很少有人会遇到这样一种情况:只有不可行(遗留代码,第三方库?)以“正确”的方式做到这一点。那时你可能会被困在那里。尝试恢复运行时错误并不好玩 - 尝试永远不要使用动态视图。
我个人使用它的唯一一次是模拟测试布局,我不想实际创建完整的模型。我不会将它用于生产代码。