我正试图将注意力集中在验证用户输入和验证业务对象上。假设我正在使用 Customer 对象。它具有以下属性:CustomerId、FirstName 和 LastName。FirstName 和 LastName 为必填项,长度不能超过 50 个字符。
我正在使用 ASP.NET MVC 3。我也在试验 Fluent Validation(但不必是这个验证框架)。
当我在 Create customer 视图中时,我将视图传递给 CustomerViewModel:
[Validator(typeof(CustomerViewModelValidator))]
public class CustomerViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
在 CustomerViewModelValidator 中,我如上所述设置了验证所需的规则。这一切都在视图上验证得很好。现在我有一个问题。在我的应用程序中,我有一个服务层,在这里我想应用所有应用程序逻辑。假设我想保存一个新客户,那么我将在 CustomerService 中有一个 Save customer 方法,它调用 CustomerRepository 的 Save 方法。
我可能有另一个应用程序(上述 Web 应用程序除外)将使用我的服务层。所以这意味着如果创建了一个客户对象,我将不得不验证一个客户对象。出现以下问题:
- 我是否还需要验证 CustomerService 中的 Customer 对象以检查 FirstName 和 LastName?
- 创建一个新的验证器类来验证 Customer 类会更好吗?还是我应该分享它?
- 我还需要验证 CustomerId 吗?我的意思是它应该大于零,但是我将如何验证 ID 为 0 的新客户?
如果有人可以对此分享一些见解/文章,将不胜感激。
我也想添加一些业务规则,这会在哪里?我在哪里以及如何实施业务规则?