diff --git a/src/Components/Web/src/Forms/InputBase.cs b/src/Components/Web/src/Forms/InputBase.cs index 9b2a62e39021..83ba30d70650 100644 --- a/src/Components/Web/src/Forms/InputBase.cs +++ b/src/Components/Web/src/Forms/InputBase.cs @@ -138,9 +138,6 @@ protected string? CurrentValueAsString { _parsingValidationMessages ??= new ValidationMessageStore(EditContext); _parsingValidationMessages.Add(FieldIdentifier, validationErrorMessage); - - // Since we're not writing to CurrentValue, we'll need to notify about modification from here - EditContext.NotifyFieldChanged(FieldIdentifier); } } diff --git a/src/Components/Web/test/Forms/InputBaseTest.cs b/src/Components/Web/test/Forms/InputBaseTest.cs index 5f2ae4ce135a..8166c067134b 100644 --- a/src/Components/Web/test/Forms/InputBaseTest.cs +++ b/src/Components/Web/test/Forms/InputBaseTest.cs @@ -322,7 +322,7 @@ public async Task ParsesCurrentValueAsStringWhenChanged_Invalid() // Act/Assert 1: Transition to invalid await inputComponent.SetCurrentValueAsStringAsync("1991/11/40"); Assert.Empty(valueChangedArgs); - Assert.True(rootComponent.EditContext.IsModified(fieldIdentifier)); + Assert.False(rootComponent.EditContext.IsModified(fieldIdentifier)); Assert.Equal(new[] { "Bad date value" }, rootComponent.EditContext.GetValidationMessages(fieldIdentifier)); Assert.Equal(1, numValidationStateChanges); @@ -337,6 +337,27 @@ public async Task ParsesCurrentValueAsStringWhenChanged_Invalid() Assert.Equal(2, numValidationStateChanges); } + [Fact] + public async Task ParsesCurrentValueAsStringWhenChanged_Invalid_DoesNotNotifyFieldChanged() + { + var model = new TestModel(); + var rootComponent = new TestInputHostComponent + { + EditContext = new EditContext(model), + ValueExpression = () => model.DateProperty + }; + var fieldIdentifier = FieldIdentifier.Create(() => model.DateProperty); + var inputComponent = await InputRenderer.RenderAndGetComponent(rootComponent); + var numFieldChanges = 0; + rootComponent.EditContext.OnFieldChanged += (sender, eventArgs) => { numFieldChanges++; }; + + await inputComponent.SetCurrentValueAsStringAsync("1991/11/40"); + + Assert.False(rootComponent.EditContext.IsModified(fieldIdentifier)); + Assert.Equal(0, numFieldChanges); + Assert.Equal(new[] { "Bad date value" }, rootComponent.EditContext.GetValidationMessages(fieldIdentifier)); + } + [Fact] public async Task ClearsParsingValidationMessagesWhenDisposed() {