【问题标题】:mvc selectlist separation of concernsmvc 选择列表关注点分离
【发布时间】:2011-05-13 15:50:12
【问题描述】:

MVC 中的控制器不应该完全不知道它提供给视图的数据将如何显示吗?

我的问题与 SelectList 有关。控制器是否应该足够聪明,知道数据将显示在下拉列表中?还是应该通过视图模型简单地给视图一个项目列表,并让视图根据需要处理它?

【问题讨论】:

标签: asp.net-mvc separation-of-concerns selectlist


【解决方案1】:

绝对 - 控制器负责以正确的结构传递正确的数据,但不会给猴子看它的样子。如果需要,视图可以选择在随机位置显示每个列表项——控制器不应该参与视觉逻辑。否则,正如您所说,您将失去“关注点分离”。

【讨论】:

  • 你同意第一段还是第二段? :)。我个人认为控制器对信息的显示方式(在选择列表中)进行假设的分离度不够。我知道控制器需要提供视图需要的东西,但这并不意味着知道它将如何使用它。在我看来,将数据定义为 SelectList 知道的太多了。并不是说 SelectList 没有用,我只是想知道它是否是严格的 MVC。
  • @Paul - 我同意第一段! :) 是的,如果控制器对视图需要的东西过于“智能”,很容易(我知道我经常这样做)被忘却并从视图中移除渲染责任。通常,创建一个强类型的 ViewModel 并从控制器填充它然后将其传递给视图是一种干净的方法,并且从控制器中抽象出任何特定于渲染的逻辑。
【解决方案2】:

我明白你在说什么。这仅取决于您如何看待 SelectList。选择列表实际上只是针对此特定用途优化的数据结构。如果您愿意,您实际上可以将 SelectList 用于其他用途。从这个意义上说,关注点的分离还是很明显的。

【讨论】:

  • 同意,SelectList 只是一种数据结构,但就其本质而言,它是为特定目的而构建的,因为它有一个 Text 值和一个 Value 值。大喊“我要直接进入下拉菜单!”。再说一次,我并不否认它的用处,只是对纯粹的 MVC 分离感到好奇。感谢您的评论。
猜你喜欢
  • 1970-01-01
  • 2016-06-01
  • 2010-10-12
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多