chobo2
chobo2

Reputation: 85715

MaxLength + Asp.net Web API - Errors out

I have this property inside my PriceDM class.

 [MaxLength(8)]
        public decimal Price { get; set; }


   public void AddPrice([FromBody]PriceDM vm)
        {
}

I keep getting this error though

{"Message":"An error has occurred.","ExceptionMessage":"Unable to cast object of type 'System.Decimal' to type 'System.Array'.","ExceptionType":"System.InvalidCastException","StackTrace":" at System.ComponentModel.DataAnnotations.MaxLengthAttribute.IsValid(Object value)\r\n at System.ComponentModel.DataAnnotations.ValidationAttribute.IsValid(Object value, ValidationContext validationContext)\r\n at System.ComponentModel.DataAnnotations.ValidationAttribute.GetValidationResult(Object value, ValidationContext validationContext)\r\n at System.Web.Http.Validation.Validators.DataAnnotationsModelValidator.Validate(ModelMetadata metadata, Object container)\r\n at System.Web.Http.Validation.DefaultBodyModelValidator.ShallowValidate(ModelMetadata metadata, ValidationContext validationContext, Object container)\r\n
at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata metadata, ValidationContext validationContext, Object container)\r\n
at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateProperties(ModelMetadata metadata, ValidationContext validationContext)\r\n at System.Web.Http.Validation.DefaultBodyModelValidator.ValidateNodeAndChildren(ModelMetadata metadata, ValidationContext validationContext, Object container)\r\n
at System.Web.Http.Validation.DefaultBodyModelValidator.Validate(Object model, Type type, ModelMetadataProvider metadataProvider, HttpActionContext actionContext, String keyPrefix)\r\n at System.Web.Http.ModelBinding.FormatterParameterBinding.<>c_DisplayClass1.b_0(Object model)\r\n at System.Threading.Tasks.TaskHelpersExtensions.<>c__DisplayClass361.<>c__DisplayClass38.<Then>b__35()\r\n at System.Threading.Tasks.TaskHelpersExtensions.<>c__DisplayClass49.<ToAsyncVoidTask>b__48()\r\n at System.Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func1 func, CancellationToken cancellationToken)"}

Can I not use MaxLength with a decimal?

Upvotes: 2

Views: 2533

Answers (1)

nozari
nozari

Reputation: 504

if you look at Microsoft documentation you will see the follow description for the MaxLenght attribute.

Specifies the maximum length of array or string data allowed in a property.

I would try Range attribute.

Upvotes: 5

Related Questions