我正在从事内容开发方案,在这种情况下,实体可能会在不完整的状态下创建,并且在一段时间内仍然不完整。所涉及的工作流程非常特别,使我无法使用更结构化的DDD方法。
我有一套必须始终满足的验证规则,以及在实体“完成”之前必须满足的另一组验证规则。
我已经使用内置的ASP.NET MVC验证来验证前者。我可以用什么方法来捕获后者?
例如: -
public class Foo
{
public int Id { get; set; }
public virtual ICollection<Bar> Bars { get; set; }
}
public class Bar
{
public int Id { get; set; }
[Required] // A Bar must be owned by a Foo at all times
public int FooId { get; set; }
public virtual Foo Foo { get; set; }
[Required] // A Bar must have a working title at all times
public string WorkingTitle { get; set; }
public bool IsComplete { get; set; }
// Cannot use RequiredAttribute on Description as the
// entity is very likely to be created without one,
// however a Description is required before the entity
// can be marked as "IsComplete"
public string Description { get; set; }
}
答案 0 :(得分:1)
您可以使用不同的方法:
IValidatableObject
接口,并在不使用数据注释的情况下执行条件验证。Description
属性的值执行IsComplete
属性的条件验证逻辑。RequiredIf
验证属性的Mvc Foolproof,这样您就不需要自己编写。就个人而言,我会选择FV.NET,但如果它更适合您的需要,您可以使用任何其他方法。