diff --git a/Radzen.Blazor.Tests/NumericRangeValidatorTests.cs b/Radzen.Blazor.Tests/NumericRangeValidatorTests.cs index c8040841624..ab0086f0630 100644 --- a/Radzen.Blazor.Tests/NumericRangeValidatorTests.cs +++ b/Radzen.Blazor.Tests/NumericRangeValidatorTests.cs @@ -60,6 +60,19 @@ public void Returns_False_If_Value_Is_Null() Assert.False(component.Instance.Validate(null)); } + [Fact] + public void Returns_True_If_Value_Is_Null_And_AllowNull_Is_True() + { + using var ctx = new TestContext(); + var component = ctx.RenderComponent(); + + component.SetParametersAndRender(parameters => + { + component.SetParametersAndRender(parameters => parameters.Add(p => p.Min, 0).Add(p => p.Max, 10).Add(p => p.AllowNull, true)); + }); + + Assert.True(component.Instance.Validate(null)); + } [Fact] public void Returns_False_If_Value_Overflows() diff --git a/Radzen.Blazor/RadzenNumericRangeValidator.cs b/Radzen.Blazor/RadzenNumericRangeValidator.cs index af122b456c5..8a5a7775596 100644 --- a/Radzen.Blazor/RadzenNumericRangeValidator.cs +++ b/Radzen.Blazor/RadzenNumericRangeValidator.cs @@ -42,6 +42,12 @@ public class RadzenNumericRangeValidator : ValidatorBase [Parameter] public IComparable Max { get; set; } + /// + /// Specifies if value can be null. If true, a null component value will be accepted. + /// + [Parameter] + public bool AllowNull { get; set; } = false; + /// protected override bool Validate(IRadzenFormComponent component) { @@ -54,7 +60,7 @@ protected override bool Validate(IRadzenFormComponent component) if (value == null) { - return false; + return AllowNull; } @@ -91,4 +97,4 @@ private bool TryConvertToType(object value, Type type, out object convertedValue } } } -} \ No newline at end of file +}