asp.net-mvc – Thunderdome MVC-为什么在MVC中使用one-model-in?

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – Thunderdome MVC-为什么在MVC中使用one-model-in?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当杰里米& Chad posted about their FubuMvc project,他们提到的区别之一是他们的“Thunderdome Principal”:

The “Thunderdome Principle” – All@H_403_4@ Controller methods take in one@H_403_4@ viewmodel object (or zero objects in@H_403_4@ some cases) and return a single@H_403_4@ viewmodel object (one object enters,@H_403_4@ one object leaves). The Controller@H_403_4@ classes will NEVER be directly exposed@H_403_4@ to anything related to HttpContext.@H_403_4@ Nothing makes me cry like seeing@H_403_4@ people trying to write tests that mock@H_403_4@ or stub that new IHttpContextWrapper@H_403_4@ interface. Likewise,Controller@H_403_4@ methods do not return ViewResult@H_403_4@ objects and are generally decoupled@H_403_4@ from all MVC infrastructure. We@H_403_4@ adopted this strategy very early on as@H_403_4@ a way to make Controller testing@H_403_4@ simpler mechanically. It’s definitely@H_403_4@ achieved that goal,but it’s also made@H_403_4@ the Controller code very streamlined@H_403_4@ and easy to read. We’ll explain how@H_403_4@ this works at KaizenConf.

他们的’一个viewmodel(或零)’方法有什么优势?

解决方法

它的主要好处是它是一种惯例,并使我们所有控制器的内容保持一致.它使我们更容易设置可以在集成测试场景中初始化环境的测试“上下文”/夹具.在大多数情况下,约定==快速,因为它从您的设计考虑中删除了很多“假设”场景.

由于我们所有的控制器操作都遵循相同的模式,因此我们可以假设很多事情并加速并简化我们的控制器集成测试工作.

有一个控制器动作有多个参数,没有什么不对,但我们发现有一个实际的模型对象为我们提供了一些额外的功能,因为模型可以包含简单的逻辑并暴露方便的属性,这可能只是一些更复杂的方面.它自己的状态等 – 基本上,这是拥有任何丰富模型的论据,并不是Thunderdome / OMIOMO模式所独有的.

猜你在找的asp.Net相关文章