验证对象状态更改(即draft-> not-draft)c#Rule / Validator

时间:2018-02-16 16:28:42

标签: validation .net-core

假设我有一个带有大量属性的复杂对象,我不会马上填写。所以我可以保存不完整/无效的对象。我希望在用户认为它不再是草稿时验证该对象。

obj.Name=null

属性验证在这里没有帮助我,因为我可以使用obj.StopBeingADraft()将对象保存在草稿状态中但是一旦我调用class Draft { string Name{get; set;} NotDraft StopBeingADraft(){} } class NotDraft { [Required] string Name{get; set;} } 我想要一个错误列表,说明所有的错误像

这样的属性

我一直在网上搜索各种单词组合而没有找到我需要的东西我只需要正确的短语来搜索Validator / Rule似乎是

或者我应该将它们保存为完全不同的对象,例如

return

这似乎只是使用内置验证。想要一个网络核心解决方案,这似乎不是最常见的情况,也许我可能会以错误的方式思考它。

1 个答案:

答案 0 :(得分:0)

我将使用流畅的验证...... https://github.com/JeremySkinner/FluentValidation

public class FooValidator: AbstractValidator<Foo> 
{
  public FooValidator() 
  {
    RuleFor(o=> o.Name).NotEmpty();
    ///.. etc    
  }
}

用法:

 var obj = new Foo();
 var validator = new FooValidator();
 ValidationResult results = validator.Validate(obj);

 bool validationSucceeded = results.IsValid;
 IList<ValidationFailure> failures = results.Errors;

希望在没有其他库的情况下使用net core来实现它,这个解决方案在我需要的时候被调用,并且不会混淆我现在需要的代码流如何工作的模型状态,欢迎其他方式来解决这个问题。好像我错过了什么。