[英]How can I can simple validators (not property specific) inside a fluent validator class?
我正在為.net使用流暢的驗證器,它可以很好地驗證對象的所有屬性的狀態,如下所示:
RuleFor(h => h.Applications).NotEmpty().WithName("Applications");
RuleFor(h => h.OwnerId).GreaterThan(0).WithMessage("You need to choose a owner");
但是我發現自己在我的Controller類中(在我的流利的Validator類之外)添加了其他驗證邏輯,在下面添加了這樣的代碼以進行額外的驗證(這不是特定於屬性的)
if (!Model.IsEntitledToEdit(project))
{
ModelState.AddModelError(string.Empty, "You are not entitled to save changes.");
}
有沒有辦法將這種類型的驗證合並到流利的驗證器類中(這樣我就可以將所有驗證都放在一個地方)
如果可以以屬性的形式獲取方法調用,那么就可以做到。
例如:
RuleFor(h => h.CanEditFooProjects).Equals(true).WithMessage("You are not entitled to save changes.");
但是,我猜這樣的代碼:
if (!Model.IsEntitledToEdit(project))
...可能正在檢查編輯“項目”對象的權限。
您可以將業務邏輯包裝在屬性獲取器中。
public bool CanEditFooProjects {
get {
if( {some condition})
{
return true;
}
else
{
return false;
}
}
}
...那么您可以在一個地方簡單地定義FluentValidation規則。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.