ASP.Net MVC视图结构

Aar*_*ron 11 asp.net-mvc

我刚刚完成了Scott Gu的Nerd Diner教程.我发现它非常有用,因为它不仅教授了ASP.Net MVC的基础知识,还介绍了如何使用存储库,验证,单元测试,Ajax等.非常好,但仍然可以管理.

但是,我很好奇他的网站结构:

具体来说,他为每个对象使用了这个视图结构:
/ ModelObject/Edit/
/ ModelObject/Create /

然后提取两个视图之间的公共元素并将它们放入局部.

我理解逻辑,但如果你的数据库中有一个中等数量的表,它似乎会导致"查看爆炸".

斯科特真的很好,所以我假设他的结构是对的.但我想知道为什么.

谢谢!

[编辑澄清]

我意识到很多时候需要有多个动作(和视图)来处理创建和编辑中的差异.这是非常简单的编辑和创建的情况,其中两个动作之间的唯一区别是在一种情况下模型具有ID并且需要更新,而在另一种情况下模型没有,因此它需要是插入.

在这种情况下,违反"哑视图"规则是否使用相同的视图来处理导致重大问题的两种情况?

Ste*_*ons 6

视图结构基于控制器,而不是模型.在Mvc方法中,您应该在控制器中查看每个操作(本质上是每个公共方法).控制器操作不必直接与数据库中的每个表匹配,但数据库中的表数与控制器和视图的数量之间可能存在某种直接关系.控制器更高级别

在适用的情况下,在控制器上进行CRUD类型操作是标准的:

  • 索引:列出项目
  • 详细信息:查看特定项目
  • 编辑:编辑项目
  • 创建:新项目
  • 删除:删除项目

这些操作中的每一个都需要一个视图(有时候不止一个).

所以,是的,如果它是一个大型应用程序,你可以收集大量的视图.最小化代码的方法是:

  • 将共享功能提取到部分视图,以使操作视图尽可能小而简单
  • 保持视图和控制器简单,以便易于维护
  • 使用AJAX在一个视图中实现更多功能

重要的是要指出任何大型应用程序都将有很多形式.无论是Mvc还是Web Forms,如果有大量数据可供使用,那么将会有很多必要的表单.

  • 你是对的,它通常是这样做的,但我已经两种方式都看到了.有时会有一个确认视图(而不是javascript弹出窗口)或没有启用javascript的后备. (2认同)