Sostituire ScriptControl o BaseValidator per un controllo validatore ASP.NET asincrono?
-
09-06-2019 - |
Domanda
Ho intenzione di sviluppare un controllo server ASP.NET per fornire la convalida asincrona della disponibilità del nome utente per le registrazioni di nuovi utenti.Il controllo consentirà allo sviluppatore di indirizzarlo a una casella di testo "nome utente" e fornirà un'indicazione se il nome utente è disponibile o meno.Come questo esempio, ma senza il goffo UpdatePanel.
Una decisione progettuale che mi dà grattacapi è se ereditare da ScriptControl O BaseValidator.
Implementandolo come a ScriptControl, posso rendere la parte lato client più semplice da gestire e localizzarla facilmente con un file resx.
Tuttavia, voglio assicurarmi che il validatore funzioni correttamente rispetto a Page.IsValid.L'unico modo che conosco per farlo è eseguire l'override BaseValidator e implementare EvaluateIsValid()
.
Quindi la mia domanda è: come suggeriresti di strutturare questo controllo?Ereditare da BaseValidator è il migliore (unico) modo per ottenere correttamente la parte del validatore o posso farlo in qualche altro modo?
Soluzione
Dovresti essere in grado di fare entrambe le cose se implementi il file IScriptControl interfaccia pur derivando anche da BaseValidator:
public class YourControl : IScriptControl, BaseValidator
Per implementare l'interfaccia IScriptControl significa che il tuo controllo dovrà avere anche i metodi GetScriptReferences e GetScriptDescriptors.