4

我是 MVC 新手,尽管有很多(我的意思是很多)非常有用的信息 - 很难清楚地了解如何使用 MVC 2.0 实现我的确切要求。

我想设置一个解决方案如下:

  • 使用 MVC 2.0 项目提供 Web UI。
  • 使用 Linq to SQL 类项目进行数据持久化。
  • 我有两个单独的代码模块需要访问上面的 Linq to SQL 模型——所以我不能将我的 Linq to SQL 模型直接包含在 MVC 项目本身中。
  • 我的 Linq to SQL 项目前面还有一个业务逻辑层。

我的问题是:

  • 如何设置我的 MVC 应用程序的模型部分以通过我的 BLL 指向我的 Linq to SQL 项目?
  • 如何执行 Web 应用程序验证?我可以使用 MVC 2.0 模型验证吗?如果不是,有什么替代方案?
  • 最后(稍微撇开一点)——什么是 ViewModel,它与 Model 有什么不同?

这么多的问题。但这是一项令人兴奋的新技术和数据访问问题,我必须非常快速地掌握其他一切,我认为 MVC 2.0 非常棒。

感谢您提供的任何指示。

4

2 回答 2

4

如何设置我的 MVC 应用程序的模型部分以通过我的 BLL 指向我的 Linq to SQL 项目?

通常,您会为此使用存储库模式。您的控制器引用了您的存储库 - 存储库从您的数据库返回您的域对象。MVC 应用程序不知道存在 LINQ to SQL。

如何执行 Web 应用程序验证?我可以使用 MVC 2.0 模型验证吗?如果不是,有什么替代方案?

将视图模型放入您的 MVC 项目中。这些视图模型可能与您的领域模型紧密结合,但它们关注的是表示模型。在这些视图模型上放置数据注释以进行验证 - MVC 框架将自动确保在这些用数据注释修饰的视图模型上进行验证。它是可插入的,因此您可以使用替代方案 - 但使用 MVC 2,它已经很好地融入其中,其中包括客户端验证。

最后(稍微撇开一点)——什么是 ViewModel,它与 Model 有什么不同?

我在上面部分回答了这个问题。您的域模型的形状可能不是您显示视图所需的形状 - 视图模型非常适合弥合这一差距。此外,即使形状确实完全匹配 - 视图模型仍然是一个好主意,这样您就可以将 UI 验证代码和其他表示元数据放在那里(因为您不希望任何与域模型上的表示逻辑相关的东西) .

这是视图模型模式的链接。

希望这可以帮助。

于 2010-09-03T03:38:08.920 回答
1
  1. 您可以添加对从 BLL 程序集中公开的对象的引用,并将它们用作您的模型。

  2. 当您想向生成的类添加验证时,请使用buddy classes

  3. ViewModel 是自定义形状的模型数据聚合。每个 View 都有一个,因为 ViewModel 的目的是以方便和简洁的方式准确地显示特定 View 所需的数据。

一个示例可能是包含 Order 和 OrderDetail 信息的视图。ViewModel 可以保存对每种类型的存储库和业务对象的内部引用。ViewModel 的属性将来自这些对象的数据合并在一起。

ViewModel 在您的情况下也很有用,因为您希望您的模型位于单独的程序集中。您可以将 DataAnnotations 应用于 ViewModel 属性以进行验证。您将使“原始”业务对象模型成为 ViewModel 的内部属性,并公开公共方法以检索和保存数据。

于 2010-09-03T03:39:29.090 回答