EditContext wurde nicht in benutzerdefinierte Eingaben kaskadiert, die von InputBase abgeleitet wurden
Posted: 16 Jan 2025, 11:35
Ich habe meine benutzerdefinierte TextInput-Eingabekomponente implementiert, indem ich sie von der InputBase-Klasse abgeleitet habe. Nach Untersuchungen habe ich herausgefunden, dass die EditContext-Eigenschaft meiner Komponente nicht initialisiert ist, obwohl ich meine Komponente innerhalb eines EditForm verwendet habe. Wenn ich die offizielle InputText-Komponente hinzufüge, die von Microsoft entwickelt wurde, ist das Problem gelöst und die EditContext-Eigenschaft der offiziellen Komponente wird initialisiert.
Ich habe meine eigene Implementierung mit der von Microsoft verglichen und sie sind fast gleich, aber meiner hat einen .razor-Teil.
Hier ist die Implementierung von Microsoft. Dies ist meine benutzerdefinierte Implementierung:
benutzerdefinierte Komponentendefinition:
Und so habe ich die Komponente verwendet:
Ich habe meine eigene Implementierung mit der von Microsoft verglichen und sie sind fast gleich, aber meiner hat einen .razor-Teil.
Hier ist die Implementierung von Microsoft. Dies ist meine benutzerdefinierte Implementierung:
benutzerdefinierte Komponentendefinition:
Code: Select all
public partial class TextInput : InputBase
{
[Parameter] public string WrapperCssClass { get; set; } = "";
[Parameter] public string InputCssClass { get; set; } = "";
[Parameter] public string? Label { get; set; }
[Parameter] public string? Placeholder { get; set; }
[Parameter] public bool Required { get; set; } = false;
[Parameter] public bool Disabled { get; set; } = false;
[DisallowNull] public ElementReference? Element { get; protected set; }
protected override bool TryParseValueFromString(string? value, [MaybeNullWhen(false)] out string result, [NotNullWhen(false)] out string? validationErrorMessage)
{
result = value;
validationErrorMessage = null;
return true;
}
}
Code: Select all
@inherits InputBase
@if(!string.IsNullOrWhiteSpace(Label))
{
@Label
}
Code: Select all
// This one's EditContext is null
// This one's EditContext is initialized