ObjectDataSource如何与传统的MVC模式相关联?

时间:2014-03-12 15:27:46

标签: asp.net design-patterns architecture

(对这个问题含糊不清的道歉。这是我个人思维模糊的结果。)

我正在设计一个带有MSSQL DB的小型网站。我偶然发现了 ObjectDataSource 类。我想我理解它,但我不知道它与传统的MVC设计模式有什么关系,如果有的话。

根据微软的说法,该类被设计为位于UI(视图)和数据库之间,因此,我认为它是一个控制器。它确实将UI动作映射到行为,但它也包含用于写入数据库的代码,这不是我期望Controller做的事情(但我可能错了)。

在我看来,它既是控制器又是模型,但我觉得我在这里看不到什么。

很多话说我很困惑。我非常感谢能够指出任何可以帮助我理解我在这里缺少的东西的任何人。

2 个答案:

答案 0 :(得分:0)

ObjectDataSource的目的是介于视图和一些检索数据的代码之间,而不是直接检索数据库。它不是控制器,而是会调用代码来获取数据的东西。更好的描述来自MVP场景,其中MVP中的视图可以自我管理,而ObjectDataSource是一种使管理更容易的控件。但是,ObjectDataSource可能会使开箱即用的传统MVP或MVC设计实现变得更加困难,具体取决于框架设置。

我个人不喜欢这种控制;我从不使用它,因为我更喜欢编码它,这样除了绑定发生之外,它更容易看到绑定是如何发生的。我的个人意见。

答案 1 :(得分:0)

如果你的意思是“传统的MVC设计模式”,

asp.net MVC中不使用ObjectDataSource。它主要用于WebForms开发。

它通常被放到webform组件上并通过UI进行配置,尽管它不一定如此。它提供了一种抽象,允许其他WebForms控件以与这些控件与数据库一起使用的方式类似的方式与对象模型交互。此对象模型最终可能来自数据库,但它允许您在两者之间插入自己的数据库方法。

WebForms不适合传统的MVC模式,因为某些技术问题使得以这种方式使用它变得复杂。与WebForms一起使用的清洁模式是MVP(模型视图展示器)模式。