![]() |
1
4
通常,您会为此使用存储库模式。您的控制器引用了您的存储库-存储库从数据库返回域对象。MVC应用程序不存在知识Linq to SQL。
将视图模型放入MVC项目中。这些视图模型可能与您的域模型紧密一致,但它们关注的是表示模型。将数据注释放在这些视图模型上进行验证—MVC框架将自动确保对这些带有数据注释的视图模型进行验证。它是可插拔的,所以您可以使用替代方案——但是对于MVC 2,它已经相当好地进行了烘焙,这包括客户端验证。
我部分地回答了上面的这个问题。域模型的形状可能不是显示视图所需的形状-视图模型非常适合填补这一空白。此外,即使形状完全匹配,视图模型仍然是一个好主意,这样您就可以将UI验证代码和其他表示元数据放在那里(因为您不希望在域模型上与表示逻辑相关的任何内容)。 这里的链接 view model patterns . 希望这有帮助。 |
![]() |
2
1
示例可能是同时包含订单和订单详细信息的视图。视图模型可以为每种类型保存对存储库和业务对象的内部引用。视图模型的属性将这些对象的数据合并在一起。 视图模型在您的案例中也很有用,因为您希望模型位于单独的程序集中。可以将数据注释应用于视图模型属性以进行验证。您将使“原始”业务对象模型成为视图模型的内部属性,并公开公共方法来检索和持久化数据。 |