2012-07-17 24 views

回答

1

自定義驗證到救援!你需要做到以下幾點:

  1. 落實IValidatableObject接口
  2. 落實IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
  3. 實現你的邏輯,以確定每個字符串少於100個字符

下面的代碼

public class YourModel : IValidatableObject 
{ 
    public List<KeyValuePair<int, string>> Authors { get; set; } 

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
    { 
     foreach(KeyValuePair<int, string> myKvp in Authors) 
     { 
      if(myKvp.Value.Length >= 100) 
      { 
       yield return new ValidationResult("Must be less than 100 characters"); 
      } 
     } 
    } 
} 

這樣你就可以打電話給if(Model.IsValid)在您的控制器操作中,並返回報告的任何錯誤。如果您KeyValuePair項指的是一個具體的實體,你甚至可以這樣做:

yield return new ValidationResult("Must be less than 100 characters", new string[] { myKvp.Key.ToString() }); 

你需要對其進行定製,以適應屬性的ID在頁面上。這樣,錯誤消息可能是特定於您的頁面上的輸入。

我在許多地方覆蓋IValidatableObject,因爲有很多情況下,我做了驗證,這取決於我的對象的狀態。你的情況有點不同,但從上面的例子可以看出它確實可行。 (但是,所有這些都不在我的頭頂,因此可能不完美!)

相關問題