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