同步 PageMethod 自定义验证控件






4.43/5 (4投票s)
这个自定义验证器允许你调用你的 PageMethods 来验证客户端输入,并在出错时阻止回发。
引言
这个控件允许你提供需要服务器端代码的项目友好的验证。 它允许你使用 PageMethods 和 JSON 无需回发地验证这些项目。
背景
本文是两篇优秀文章的结果,它们对本文贡献很大。 首先,Artiom Chilaru 的 在验证器中使用 PageMethods 的文章。 那里的问题是验证器是异步的,因此在必须阻止存在任何验证错误的回发的情况下很难使用。
第二个是 Sandip Patel 的关于同步 AJAX 调用。 这是我构建此控件以执行我想要执行的操作所需的缺失链接,即适应其他验证器的工作方式,并在客户端验证错误时阻止回发。
使用代码
此控件可以直接添加到任何启用 AJAX 的网站项目。 我建议将其添加到单独的控件库项目中,以便轻松地将其放入工具箱中,而无需依赖已编译的网站版本。
添加到页面后,你应该填写 WebMethod
和 ControlToValidate
属性。 之后,填写其余部分,使其与其余客户端验证样式保持一致,例如 ErrorMessage
和 Display
。
然后,你应该在代码隐藏中创建适当的 PageMethod。 请记住添加适当的引用和 using
语句。 有关 PageMethods 的指南,请点击这里。
关于创建 PageMethod 有两个重要点。 一,它必须返回一个布尔值,指示检查是否通过。 第二,它必须接受一个名为“value
”的单个字符串参数。 这是一个例子
[WebMethod]
public static bool ValidateUser(string value)
{
return BaseClass.ValidateUsername(value, GetProject());
}
方法的名称应与你在验证器的 WebMethod
属性中指定的名称相匹配。
就我个人而言,我将大多数这些方法交给执行实际验证的静态 BLL 类。 如果你的站点有许多页面都使用相似或相同的验证规则,这是一个好主意。
关注点
我对 Artiom 的原始文章进行了一个修改,使其可以与无 Cookie 会话一起使用。 本质上,它设置了用于访问 PageMethod 的路径,以排除会话密钥。
我想再次感谢 Artiom 和 Sandip 的优秀文章。 它们对我帮助很大,我相信它们将来会帮助很多人。
使用此控件的一个好场景是,当你拥有诸如在回发时打开的拼写检查器之类的东西时,你不想在回发后返回带有验证错误的表单,除非在非常特殊的情况下。
我希望这个控件能帮助你完成你自己的项目,就像它帮助我完成我的项目一样。
历史
- 版本 1.0 - 发布到 Code Project。
- 2009 05 05 - 添加了演示项目