本帖最后由 zhenxinya 于 2012-06-15 22:25:17 编辑

解决方案 »

  1.   

    CustomValidator的Display改成Dynamic,加上ValidateEmptyText="True",就可以只用CustomValidator来验证了。后台这样写        protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
            {
                string inputs = args.Value;
                if (string.IsNullOrEmpty(inputs))
                {
                    CustomValidator1.ErrorMessage = "用户名不能为空";
                    args.IsValid = false;
                    return;
                }
                else if (!Regex.Match(args.Value, "^[\u4e00-\u9fa5A-za-z0-9_-]+$").Success)
                {
                    CustomValidator1.ErrorMessage = "你输入了非法字符";
                    args.IsValid = false;
                    return;
                }
                else if (!(getTextBoxLength(inputs) >= 4 && getTextBoxLength(inputs) <= 20))
                {
                    CustomValidator1.ErrorMessage = "只能输入4-20位字符";
                    args.IsValid = false;
                    return;
                }
                else
                {
                    args.IsValid = true;
                    return;
                    // 如果设置了IsValid=true就不能显示"通过验证"了。还是用Label吧
                }
            }然后button的Click事件就可以不要了。
    另外getTextBoxLength方法里面应应该是if (textBoxStr[i] >= 0x3000 && textBoxStr[i] <= 0x9FFF)