使用 POCO 和模型绑定来进行上下文验证是否很常见?

Is it common to use POCOs and model binding to do contextual validation?

我在 ASP.NET MVC 中注意到,将模型绑定和验证注释与也与数据库交互的业务对象结合使用是司空见惯的事情。

不幸的是,这意味着请求的范围和发生的验证必须始终是 1:1 域模型。至少不是没有编写一堆异常代码。

如果我正在寻找一种在 ASP.NET MVC 中进行上下文验证的方法,是否有任何示例或者是否已经接受了使用代表传入的 POCO classes 的做法数据?

假设我称这些为 "Request Models"。例如,我创建了一个名为 UpdateUserRequestModel 的 class。我只定义允许用户更新的数据,然后,我让 MVC 将这些值绑定到这个代理模型中。稍后在我的 controller/services 中,我访问请求模型的 public 属性以获得我希望移至用户对象的值。

因此,这里的问题是:在普遍接受的 ASP.NET MVC 约定中是否已经有这种做法的示例?它有特定的名称吗?如果做不到这一点,当我希望进行上下文验证时,是否有比 MVC 附带的默认模型绑定器和值提供程序更好的选择?

我在我的应用程序上这样做。我验证用户执行的操作,将验证属性等放在表示该操作的视图模型上(方便地对视图中的表单建模,并且模型在返回的路上绑定结果)。我什至移植了 ContosoUniversity 应用程序来反映这种风格:

https://github.com/jbogard/ContosoUniversity