我有一个单独的.dll与我们的数据库模型和部分类等使用FluentValidation工作正常(这是由桌面条码终端和我们的网站都使用它)。MVC FluentValidation与实体框架在单独的.dll
对于桌面应用程序,我可以读取并显示所有的错误,如下面
public override int SaveChanges()
{
var errors = this.GetValidationErrors();
if (errors.Any())
{
//handle validation errors
return 0;
}
else
{
return base.SaveChanges();
}
}
对于MVC网站,我可以设置在单独的模型验证或创建数据的注释,并得到这些工作的好(这是不是有什么我想要)。我无法理解的事情是如何强制我的模型映射到实体,以便能够在视图中显示流畅的验证消息。我不希望维护两套独立的逻辑,并且条形码应用程序和网站必须使用相同的逻辑。
我是否必须将我的实体直接映射到视图?我一直认为这是一件坏事,不够灵活。或者有什么方法可以说明模型中的字段映射回我的某个实体的属性?也许是一些描述的注释。
编辑:
只是一些澄清的,我需要的类型的验证。
大多数前端输入类型验证仍然保留在viewModels(必需/长度/密码匹配等 - 基本上我可以用于客户端验证的所有东西)。但是,我不想在那里进行所有业务逻辑验证。像电子邮件地址之类的东西必须在设置其他选项之前进行验证,帐户号码必须是基于名称的特定格式(我不能用正则表达式做的事情)。这个特定的日期不是有效的交货日期等。
我想我可以做的一件事就是将这些添加到ValidationSummary中,并将它们与各个字段分开显示。
嗨克里斯和谢谢,我更新了我的问题,以解释我需要更好的类型。不幸的是,即使最简单的更新可以发生,我们也确实需要满足一大堆标准,并且由于两个单独的程序必须使用它,所以我真的需要它。 – 2013-04-04 19:58:09
您的视图模型也可以共享。只需将它们添加到您的类库中即可。我唯一的观点是,你应该从验证的角度来看待你的视图模型。从实体的角度来看,您唯一需要担心的是完美的数据库完整性问题。 – 2013-04-04 20:58:07