我正在试图验证用户输入和验证业务对象。假设我正在使用Customer对象。它具有以下属性:CustomerId,FirstName和LastName。 FirstName和LastName是必需的,它们的长度不能超过50个字符。
我正在使用ASP.NET MVC 3.我也在尝试使用Fluent验证(但不一定是这个验证框架)。
当我在创建客户视图时,我将视图传递给CustomerViewModel:
[Validator(typeof(CustomerViewModelValidator))]
public class CustomerViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
在CustomerViewModelValidator中,我如上所述设置了验证所需的规则。这一切都在视图上有效。现在我有一个问题。在我的应用程序中,我有一个服务层,在这里我想应用所有应用程序逻辑。假设我想保存一个新客户,那么我将在CustomerService中有一个Save客户方法,该方法调用CustomerRepository的Save方法。
我可能有另一个应用程序(除了上面描述的Web应用程序)将使用我的服务层。所以这意味着如果创建一个Customer对象,我将不得不验证它。出现以下问题:
如果有人可以分享一些见解/文章,我们将不胜感激。
我很想添加一些商业规则,这会是什么?我在哪里以及如何实施业务规则?
答案 0 :(得分:0)
我是否还需要验证CustomerService中的Customer对象以检查FirstName和LastName?
对此问题可能有不同意见,我的意见是,如果您正在创建可重用的服务,那么在服务级别验证Customer对象会更为正确。
创建一个新的验证器类来验证Customer类会更好吗?或者我应该分享一下吗?
您应该创建一个新的验证器。请注意,CustomerViewModel
和Customer
是两个不同的类。视图模型特定于给定视图,可能包含模型类属性的子集或超集。服务层的验证应仅验证业务规则。如果您使用的是SQL Server,则甚至可以在数据库级别执行验证(通过设置列的长度),如果某些业务规则是侵犯。