ScriptControl oder BaseValidator für ein asynchrones ASP.NET-Validator-Steuerelement überschreiben?
-
09-06-2019 - |
Frage
Ich plane, ein ASP.NET-Serversteuerelement zu entwickeln, um eine asynchrone Überprüfung der Benutzernamenverfügbarkeit für neue Benutzerregistrierungen bereitzustellen.Das Steuerelement ermöglicht es einem Entwickler, es auf ein Textfeld „Benutzername“ zu verweisen, und es gibt einen Hinweis darauf, ob der Benutzername verfügbar ist oder nicht.Wie dieses Beispiel, aber ohne das klobige UpdatePanel.
Eine Design-Entscheidung, die mir Kopfschmerzen bereitet, ist die Frage, ob ich davon erben soll ScriptControl oder BaseValidator.
Durch die Implementierung als ScriptControl, kann ich die Handhabung des clientseitigen Teils vereinfachen und ihn mit einem Resx leicht lokalisieren.
Ich möchte jedoch sicherstellen, dass der Validator in Bezug auf Page.IsValid ordnungsgemäß funktioniert.Die einzige Möglichkeit, die ich kenne, ist das Überschreiben BaseValidator und umsetzen EvaluateIsValid()
.
Meine Frage lautet also: Wie würden Sie vorschlagen, diese Kontrolle zu strukturieren?Ist das Erben von BaseValidator der beste (einzige) Weg, den Validator-Teil richtig zu machen, oder kann ich das auf andere Weise tun?
Lösung
Sie sollten in der Lage sein, beides zu tun, wenn Sie das implementieren IScriptControl Schnittstelle und leitet sich gleichzeitig von BaseValidator ab:
public class YourControl : IScriptControl, BaseValidator
Um die IScriptControl-Schnittstelle zu implementieren, muss Ihr Steuerelement auch über die Methoden GetScriptReferences und GetScriptDescriptors verfügen.