2011-08-17 48 views
0

我有一個有趣的客戶端需求。ASP.NET MVC - 兩個文本框中的一個驗證器

我有需要顯示像這樣控制:

Date of xxx  [ mm ][ yy ] 

有兩個文本框一個標籤 - 一個用於月份數字,一個是一年的數字。

雖然有兩個文本字段,但我們希望在驗證兩個字段之後運行驗證。

此外,頁面上還有許多這些控件。如何將打包這件事的最好方法,這樣我可以打電話:

@Laberfor(x => x.Datexxx) 
@EditorFor(x => x.Datexxx) 

在此先感謝

回答

0

如果你的控制是強類型的,你可以實現IValidatableObject及其Validate方法。

假設你的模式是這樣的:

public class CombinedDateViewModel : IValidatableObject 
{ 
    [Required] 
    public int month { get; set; } 
    [Required] 
    public int year { get; set; } 

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
    {   
     if(month > 12 || month < 1) 
      yield return new ValidationResult("Month is out of range"); 
     if(year < 0 || year > 2020) 
      yield return new ValidationResult("Year is out of range"); 
    } 
} 

的產生驗證結果將在驗證摘要體現。