实体框架:在哪里放置填充ASP.NET ModelState的业务逻辑?

时间:2011-11-01 16:05:03

标签: asp.net-mvc entity-framework-4

我有一个使用Entity Framework进行数据持久化的站点。 我在许多实体上使用了伙伴类系统来标记使用数据注释需要哪些字段。 ASP.NET MVC及其ModelState在开箱即用的情况下运行良好。 我的问题是,我有一些更复杂的验证 - 有没有一种方法可以将这种业务逻辑包含在伙伴类中,以便正确填充ModelState?

这样的一个例子 如果字段X是一个值,则需要字段Y.

逻辑可能比这更复杂。

谢谢,

2 个答案:

答案 0 :(得分:4)

这可以通过撰写custom validator attributes来实现。但我个人更喜欢FluentValidation.NET框架而不是数据注释,因为它提供了一种更简洁,更简单的表达自定义验证逻辑的方法,即使在复杂的场景中也是如此。

答案 1 :(得分:3)

您应该让实体自己实现IValidatableObject,然后对每个错误使用yield return ValidationResult的迭代器。

或者,您可以制作自定义的班级ValidationAttribute并将其应用于好友班。