2010-04-27 131 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