是否为异步ASP.NET验证程序控件覆盖ScriptControl或者BaseValidator?

时间:2020-03-05 18:49:33  来源:igfitidea点击:

我打算开发一个ASP.NET服务器控件,以为新用户注册提供异步用户名可用性验证。该控件将允许开发人员将其指向"用户名"文本框,并提供用户名是否可用的指示。像这个例子一样,但是没有笨拙的UpdatePanel。

让我头疼的一个设计决策是继承自ScriptControl还是BaseValidator。

通过将其实现为ScriptControl,我可以使客户端部分更易于处理,并可以通过resx轻松地对其进行本地化。

但是,我想确保验证器相对于Page.IsValid正常运行。我知道做到这一点的唯一方法是重写BaseValidator并实现EvaluateIsValid()

因此,我的问题是,我们将如何建议构造此控件?从BaseValidator继承是正确(正确)验证器部分的最佳方法,还是可以通过其他方式做到这一点?

解决方案

回答

如果我们实现IScriptControl接口,同时又从BaseValidator派生,那么我们应该能够做到这两者:

public class YourControl : IScriptControl, BaseValidator

要实现IScriptControl接口,意味着控件还必须具有GetScriptReferences和GetScriptDescriptors方法。