ant-design-blazor/components/form/Internal/Validate/ValidationAttribute/NumberMinAttribute.cs
笨木头 ec45abc4d7 feat(module: form): support set validation rules on FormItem (#1516)
* feat(module: form): support set validation rules on FormItem(not complete yet)

* refactor(module: form): optimized code

* feat(module: form): support Whitespace rule

* feat(module: form): support [message、pattern、transform、validator、whitespace] rules

* feat(module: form): support type rule

* feat(module: form): support [defaultField、oneOf、fields、type] rules

* feat(module: form): support custome validate messages(without test)

* test(module: form): complete RuleValidate_ValidateMessages test

* feat(module: form): complete DynamicRule demo, refactor code, fix bugs

* feat(module: form): support ValidateMessages param

* doc(module: form): add "Rules" and "ValidateMessages" docs

* fix: Rule.Max's errorMessage is wrong

* refactor: rename Rule to FormValidationRule

* test: rename Rule to FormValidationRule

* chore: refactor code and rename classes

* Update ValidateMode.razor

* Update FormValidateErrorMessages.cs

* Update FormValidateHelper.cs

Co-authored-by: James Yeung <shunjiey@hotmail.com>
2021-05-28 09:08:42 +00:00

49 lines
1.7 KiB
C#

using System;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
namespace AntDesign.Internal.Form.Validate
{
internal class NumberMinAttribute : ValidationAttribute
{
internal decimal Min { get; }
internal NumberMinAttribute(decimal min)
{
Min = min;
}
public override string FormatErrorMessage(string name)
{
return string.Format(CultureInfo.CurrentCulture, ErrorMessageString, name, Min);
}
public override bool IsValid(object value)
{
var type = value.GetType();
var typeMaxValue = GetMaxValueString(type);
var attribute = new RangeAttribute(type, Min.ToString(), typeMaxValue);
return attribute.IsValid(value);
}
private static string GetMaxValueString(Type type)
{
if (type == typeof(byte)) return byte.MaxValue.ToString();
if (type == typeof(short)) return short.MaxValue.ToString();
if (type == typeof(int)) return int.MaxValue.ToString();
if (type == typeof(long)) return long.MaxValue.ToString();
if (type == typeof(float)) return float.MaxValue.ToString();
if (type == typeof(double)) return double.MaxValue.ToString();
if (type == typeof(sbyte)) return sbyte.MaxValue.ToString();
if (type == typeof(ushort)) return ushort.MaxValue.ToString();
if (type == typeof(uint)) return uint.MaxValue.ToString();
if (type == typeof(ulong)) return ulong.MaxValue.ToString();
if (type == typeof(decimal)) return decimal.MaxValue.ToString();
return null;
}
}
}