private DateTime BirthDate(string txtIdCard)
    {
        try
        {
            if (txtIdCard.Length == 15)
            {
                return new DateTime(int.Parse("19" + txtIdCard.Substring(7, 2)), int.Parse(txtIdCard.Substring(9, 2)), int.Parse(txtIdCard.Substring(11, 2)));
            }
            else if (txtIdCard.Length == 18)
            {
                return new DateTime(int.Parse(txtIdCard.Substring(6, 4)), int.Parse(txtIdCard.Substring(10, 2)), int.Parse(txtIdCard.Substring(12, 2)));
            }
            else
                return DateTime.MinValue;
        }
        catch { return DateTime.MinValue; }
    }
 protected void CVIdCard_ServerValidate(object source, ServerValidateEventArgs args)
    {
        if (BirthDate(args.Value) == DateTime.MinValue)
        {
            args.IsValid = false;
            CVIdCard.ErrorMessage = "有误!";
        }       
    }
这个是验证身份证号码的判断,这个验证要必须输入身份证号码,即txtIdCard必须输入数字,我现在想文本框txtIdCard为空也行,即有的人没有身份证那就不验证,怎么做啊??主要是允许文本框为空,多谢指教~~

解决方案 »

  1.   

    哪位指教一下啊,如果文本框接收的是空,即没有身份证,我也允许通过(即不判断),怎么做啊??多谢~~
    能不能在这里帮修改一下啊??
    protected void CVIdCard_ServerValidate(object source, ServerValidateEventArgs args) 
        { 
            if (BirthDate(args.Value) == DateTime.MinValue) 
            { 
                args.IsValid = false; 
                CVIdCard.ErrorMessage = "有误!"; //希望在这里加判断,即接收来的为空也可以通过        }      
        } 
    BirthDate()在上面~~为取得出生年月,望指教~~
      

  2.   

    加上一个组建,error 错误提示
      

  3.   

    if (!string.IsNullOrEmpty(args.Value) && BirthDate(args.Value) == DateTime.MinValue) //要加在这里...
      

  4.   

    if (!string.IsNullOrEmpty(args.Value) && BirthDate(args.Value) == DateTime.MinValue) 原本返回的是 datetime类型,现在这样 肯定是从char数据类型到datetime数据类型的转换导致datetime值越界啊??哪位还有更好点的办法啊??多谢~~
      

  5.   

    ServerValidateEventArgs.Value返回的肯定是字符串...不可能是char也不可能是DateTime更不可能越界...