2013-03-19 77 views
8

在ASP.NET MVC4應用程序中,我們使用FluentValidation來驗證我們的模型。在某些情況下,我們只想在另一個屬性具有值時驗證屬性。我們使用When關鍵字來完成此操作。一個簡單的驗證類看起來像這樣:在客戶端進行流暢的驗證

public class PersonValidator : AbstractValidator<Person> 
{ 
    public PersonValidator() 
    { 
     RuleFor(item => item.FirstName).NotEmpty(); 
     RuleFor(item => item.LastName).NotEmpty().When(item => !string.IsNullOrEmpty(item.FirstName)) 
    } 
} 

我們希望爲此進行客戶端驗證。我試圖創建一個自定義的FluentValidationPropertyValidator。但是我找不到一種方法來提取驗證規則的When部分。 有人能指引我正確的方向嗎?

+2

經過一些更多的研究發現這將需要大量的工作,更多信息:https://fluentvalidation.codeplex.com/discussions/229346 – 2013-03-19 09:59:32

回答

0

在FluentValidation一些驗證的就是不支持客戶端驗證:

從技術文檔(http://fluentvalidation.codeplex.com/wikipage?title=mvc&referringTitle=Documentation):

注意FluentValidation還將與ASP.NET MVC的 客戶端工作驗證,但不是所有的規則都支持。例如, 任何使用條件(使用時/除非),自定義 驗證程序或Must必須不會在客戶端上運行的任何規則。所述 以下驗證器所支持的客戶端上:

* NOTNULL/NotEmpty *匹配(正則表達式) * InclusiveBetween(範圍) *信用卡式 *電子郵件 * EqualTo(交屬性相等比較) *長度