2010-04-27 129 views
1

我正在做一個項目,我正在做客戶端驗證。一切正常,除了StringLength屬性的minimumlength財產(提交時和服務器端驗證完成它的工作原理):ASP.NET客戶端驗證dataannotations - javascript minimumlength零

[StringLength(50, MinimumLength = 6)] 

通過Html.EnableClientValication();產生的JavaScript是以下幾點:

// snip 
{"FieldName":"User.Password","ReplaceValidationMessageContents":true,"ValidationMessageId":"User_Password_validationMessage","ValidationRules":[{"ErrorMessage":"The field Password must be a string with a minimum length of 6 and a maximum length of 50.","ValidationParameters":{"minimumLength":0,"maximumLength":50},"ValidationType":"stringLength"}]}],"FormId":"form0","ReplaceValidationSummary":false}) 

重要東西在這裏:

{"minimumLength":0,"maximumLength":50} 

它產生的JavaScript與最小的屬性錯誤。你們有提示嗎?這是一個可能的錯誤?

回答

2

這是來自反射器

public class StringLengthAttributeAdapter : DataAnnotationsModelValidator<StringLengthAttribute> 
    { 
     // Methods 
     public StringLengthAttributeAdapter(ModelMetadata metadata, ControllerContext context, StringLengthAttribute attribute) : base(metadata, context, attribute) 
     { 
     } 

     public override IEnumerable<ModelClientValidationRule> GetClientValidationRules() 
     { 
      return new ModelClientValidationStringLengthRule[] 
{ new ModelClientValidationStringLengthRule(base.ErrorMessage, 
-> 0 <-, base.Attribute.MaximumLength) }; 
     } 
    } 

酵母的代碼,這是一個相當不正確的。

+0

嗨!感謝您驗證這是一個錯誤。你從哪裏找到源代碼?我看過aspnet.codeplex.com,但沒有找到它。 – Kordonme 2010-04-28 09:23:46

+0

良好的舊反射器 - 從.net dll反彙編代碼的免費工具。很有用。 – 2010-04-28 12:37:50