簡體   English   中英

我如何才能在流利的驗證器類中使用簡單的驗證器(不是特定於屬性的)?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM