扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
图1 效果图(输入错误状态下) |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Text.RegularExpressions; namespace WebControlLibrary { [DefaultProperty("Text")] [ToolboxData("<{0}:TelNumValidator runat=server> </{0}:TelNumValidator>") ] public class TelNumValidator : BaseValidator { // 定义私有变量,其中_clientFileUrl表示JavaScript文件存储目录 // ValidationExpression表示正则表达式 private string _clientFileUrl = "ClientFiles/"; private const string ValidationExpression = @"(\d{3}-\d{8}|\d{4}-\d{7})"; // 定义属性ClientFileUrl,用于获取或设置脚本相对路径 [ Description("获取或设置脚本相对路径"), DefaultValue("ClientFiles/"), Category("Appearance") ] public string ClientFileUrl { get { return _clientFileUrl; } set { _clientFileUrl = value; } } //重写AddAttributesToRender,为验证控件添加特殊属性evaluationfunction和validationexp protected override void AddAttributesToRender(HtmlTextWriter writer) { base.AddAttributesToRender(writer); if (RenderUplevel) { writer.AddAttribute("evaluationfunction", "TelNumValidatorEvaluateIsValid", false); writer.AddAttribute("validationexp", ValidationExpression); } } //重写EvaluateIsValid方法,定义服务器端验证逻辑 protected override bool EvaluateIsValid() string controlValue = GetControlValidationValue(ControlToValidate); if (controlValue == null) { return true; } controlValue = controlValue.Trim(); try { Match m = Regex.Match(controlValue, ValidationExpression); return (m.Success && (m.Index == 0) && (m.Length == controlValue.Length)); } catch { return false; } } //重写OnPreRender方法,注册客户端脚本程序 protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); if (RenderUplevel) {Page.ClientScript.RegisterClientScriptBlock ( typeof(TelNumValidator), "ClientValidator", GetClientFileUrl ( "ClientValidator.js" )); } } // 实现辅助函数GetClientFileUrl,用于获取JavaScript文件的完整路径 private string GetClientFileUrl(string fileName) { string tempClient = String.Format("<script language=\"javascript\" src=\"{0}\"></script>", (ClientFileUrl + fileName)); return tempClient; } } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者