• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

asp.net MaxLengthValidator 最大长度验证控件代码

c# 搞代码 4年前 (2022-01-09) 29次浏览 已收录 0个评论
/// <summary> /// TextBox的最大长度验证器,如果是varchar,char字段类型,需要此验证 /// </summary> [Description("对MaxLength进行验证")] [ToolboxData("<{0}:MaxLengthValidator runat=server></{0}:MaxLengthValidator>")] public class MaxLengthValidator : BaseValidator { /// <summary> /// 获取或设置是否为非nvarchar,nchar字段验证 /// </summary> [DefaultValue(true)] public bool ValidateForNonNationalField { get { var data = this.ViewState["ValidateForNonNationalField"]; if (data == null) { return true; } else { return (bool)data; } } set { this.ViewState["ValidateForNonNationalField"] = value; } } /// <summary> /// 构造函数 /// </summary> public MaxLengthValidator<mark>来源gaodaimacom搞#^代%!码网</mark>() { this.ValidateForNonNationalField = true; } protected override bool EvaluateIsValid() { var targetControlName = this.ControlToValidate; if (targetControlName == null) { //没有目标验证控件,验证通过 return true; } var targetControl = this.NamingContainer.FindControl(targetControlName) as TextBox; if (targetControl == null) { //目标控件不是文本框或不存在,验证通过 return true; } var maxLength = targetControl.MaxLength; var targetValue = this.GetControlValidationValue(targetControlName); var targetLength = 0; if (string.IsNullOrEmpty(targetValue)) { targetLength = 0; } else { if (this.ValidateForNonNationalField) { targetLength = this.GetLengthForNonNationnal(targetValue); } else { targetLength = targetValue.Length; } } return targetLength <= maxLength; } /// <summary> /// 获得保存为Varchar时,text的长度 /// </summary> /// <param name="text"></param> /// <returns></returns> public virtual int GetLengthForNonNationnal(string text) { if (string.IsNullOrEmpty(text)) { return 0; } var length = 0; for (var i = 0; i < text.ToCharArray().Length; i++) { var charCode = (int)text[i]; length++; if (charCode > 255) { length++; } } return length; } protected override void AddAttributesToRender(HtmlTextWriter writer) { base.AddAttributesToRender(writer); if (this.RenderUplevel) { writer.AddAttribute("TargetControlID", this.GetControlRenderID(this.ControlToValidate)); writer.AddAttribute("ValidateForNonNationalField", this.ValidateForNonNationalField ? "true" : "false"); writer.AddAttribute("evaluationfunction", "MaxLengthValidator_Validate"); var targetControl = this.NamingContainer.FindControl(this.ControlToValidate) as TextBox; if (targetControl != null) { var maxLength = targetControl.MaxLength; writer.AddAttribute("maxlength", maxLength.ToString()); } } } protected override void OnPreRender(EventArgs e) { var script = @" function MaxLengthValidator_GetNonNationalLength(text) { if (!text){ return 0; } var length = 0; for (var i = 0; i < text.length; i++) { var charCode = text.charCodeAt(i); length++; if (charCode > 255) { length++; } } return length; } function MaxLengthValidator_Validate(val) { if (!val) { return true; } var targetID = val.TargetControlID; if (!targetID) { return true; } var nonNational = val.ValidateForNonNationalField; if (!nonNational) { return true; } var target = document.getElementById(targetID); if (!target) { return true; } var maxLength = val.maxlength; if (!maxLength || isNaN(maxLength)) { return true; } var targetValue = target.value; if (!targetValue) { return true; } var realLength = targetValue.length; if (nonNational == 'true') { realLength = MaxLengthValidator_GetNonNationalLength(targetValue); } return realLength <= parseInt(maxLength); }"; ScriptManager.RegisterClientScriptBlock(this, typeof(MaxLengthValidator), "MaxLengthValidator_Validate", script, true); base.OnPreRender(e); } }

更多asp.net MaxLengthValidator 最大长度验证控件代码相关文章请关注搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:asp.net MaxLengthValidator 最大长度验证控件代码
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址