0
我正在处理一个需要同一模型的不同验证集的项目,我们正在试图找到处理它的最佳解决方案。如何在MVC3中处理服务层验证
一个简单的例子可以使用我们的客户DTO:
public class Customer
{
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
[Required] // Only required on some views
public string Title { get; set; }
}
在我们的第一个观点,所有字段是必需的,因为他们在使用DTO正在DataAnnotations所示。
在我们的第二个视图中,FirstName和LastName可能是必需的,但Title是可选的,甚至可能不会在视图中表示。
复杂化出现了,我们希望在我们的服务层中存在验证规则(以便我们可以在稍后利用相同验证提供API),它可以访问数据注释并对其进行验证,如果他们不验证,则向UI回报。
到目前为止,中奖的方法是:
- 每个视图有一个专门的视图模型,其中DataAnnotations上存在。
- 然后viewmodel使用类似Automapper的方式映射我们的域对象。
- 然后,将域对象传递给存储库和服务以对其执行操作。
这也意味着:
- 确认不会发生在服务层,由于当时的对象了那里,他们将域对象,而不是的ViewModels。
有没有更好的办法,我们应该为企业应用程序处理?我们尚未找到解决方案。