为异步 ASP.NET 验证器控件覆盖 ScriptControl 或 BaseValidator?

Dav*_*ard 5 asp.net validation asp.net-ajax

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

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

通过将它实现为ScriptControl,我可以使客户端部分更容易处理并使用 resx 轻松本地化它。

但是,我想确保验证器在 Page.IsValid 方面正常运行。我知道这样做的唯一方法是覆盖BaseValidator并实现EvaluateIsValid().

所以,我的问题是,您建议如何构建此控件?从 BaseValidator 继承是使验证器部分正确的最佳(唯一)方法,还是我可以用其他方式做到这一点?

Cra*_*aig 4

如果您实现IScriptControl接口,同时也从 BaseValidator 派生,那么您应该能够执行这两项操作:

public class YourControl : IScriptControl, BaseValidator
Run Code Online (Sandbox Code Playgroud)

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