使用ViewModels,基于数据注释的验证和域对象的最有效方法?

时间:2010-07-19 14:23:36

标签: c# .net asp.net-mvc

我正在使用NHibernate进行持久化并将我的域模型映射出来。我正在使用MVC2,我热衷于使用内置模型验证进行所有基本验证(字符串长度,范围等)。

问题是我发现这涉及到大量的工作。我有26个代表域的POCO类。这意味着我需要大约5 x 26 = 130个ViewModel(一个用于创建,编辑,查看,列表,删除),因为我将在任何地方使用ViewModels。 130 ViewModel创建和维护考虑到我已经绘制出来的域对象似乎很浪费。

现在我已经意识到这是一种很好的发展方式,可以让观点尽可能地保持愚蠢,消除与观点相关的安全失误等等。说实话,我得到了强烈的印象,我是错过了一个可以加速这个过程的工具或技术。

有没有办法减轻这种痛苦?

1 个答案:

答案 0 :(得分:0)

我不确定为什么你需要5个ViewModels? ViewModels有点代表你想要显示的内容(在视图中):

假设您有这些相关实体:

BlogArticle
Tags
CategoryName

您有三个实体,但是从创建BlogArticle的表单中,您正在撰写文章,选择标签,然后在一个页面上选择一个类别。

在BlogArticle创建表单上,您只需要以下ViewModel:

BlogArticleViewModel
+string BlogTitle
+string BlogContent
+string TagName //could be mapped to textbox, checkbox
+string CategoryName//same as above

您可以使用http://automapper.codeplex.com将模型映射到ViewModels。