我想驗證我的webApi 2輸入對象列表。流利的驗證不工作列表對象
但它不驗證。 Modelstate始終設置爲true。
示例代碼:
public class A
{
public int Id { get; set; }
public string Name { get; set; }
}
public class ClassAValidator : AbstractValidator<A>
{
public classAValidator()
{
RuleSet("ClassA",()=>{
RuleFor(x => x.Id).NotEmpty().WithMessage("The Idcan't be Empty or Zero");
RuleFor(x => x.Name).NotEmpty().Length(10).WithMessage("Name Should be Six Char length");
});
}
}
注:我們需要的是精確的6個字符的字符串字段。
API:
[HttpPut]
public async Task<IHttpActionResult> Put([FromBody] List<A> alist)
{
if(!ModelState.IsValid) throw new InvalidDataException(ModelState,"Data Validation Failed for Upload Class A");
// Model State is Always true
}
任何人都能指出我錯過了什麼?
更新: 我試過如圖Should i create a new Type for Collection in FluentValidation?
,但仍然有同樣的問題。
解決更新:
問題是規則集的使用引起的驗證沒有得到觸發。在刪除「RuleSet」時,即使沒有定義List [A] Validator類,它也可以工作。
來自Jeremy Skinner的消息:第一個問題是你的規則被封裝在規則集中,所以他們永遠不會被執行。規則集是選擇加入的,而自動集成只調用不在規則集中的規則。
對不起,忘了添加構造函數..是的,我其實 – RajGan