Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 验证在3层中不起作用_C#_Asp.net_Regex_Validation - Fatal编程技术网

C# 验证在3层中不起作用

C# 验证在3层中不起作用,c#,asp.net,regex,validation,C#,Asp.net,Regex,Validation,我的DAT/DAL类代码很好。 在我的业务逻辑层。。我想使用正则表达式验证ID号 private int idno; public int IDNO { get { return idno; } set { Regex r = new Regex("^[a-zA-Z ]+$"); if(r.IsMatch(idno.ToString())) throw

我的DAT/DAL类代码很好。 在我的业务逻辑层。。我想使用正则表达式验证ID号

private int idno;
    public int IDNO
    {
        get { return idno; }
        set
        {

            Regex r = new Regex("^[a-zA-Z ]+$");
            if(r.IsMatch(idno.ToString()))
                throw new Exception("Invalid length");
            idno = value;


        }

     public void AddStudent()
    {
        DAT.AddStudent(this.idno);
    }
     public DataTable ViewStudent()
    {
        return DAT.ViewStudent();
    }
然后在我的表示层中,我在Add按钮中调用了业务逻辑层

protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
            BIZ b = new BIZ();
            b.IDNO = int.Parse(TextBox1.Text.ToString());


            b.AddStudent();

            GridView1.DataSource = b.ViewStudent();
            GridView1.DataBind();
        }
        catch(Exception ex)
        {
            Response.Write(ex.Message);
        }
    }

始终验证输入字符串的格式不正确。我希望验证是我在BLL中写的。。我的意思是,在我的BLL中,如果用户键入字符串,它已经进行了验证,但为什么它不抛出BLL异常?

您似乎没有对属性的setter执行任何验证。它应该读吗

            Regex r = new Regex("^[a-zA-Z ]+$");
            if(r.IsMatch(value.ToString()))
                throw new Exception("Invalid length");
            this.idno = value;

你说我不进行任何验证是什么意思?我想验证用户是否输入字母而不是数字。。感谢您的回复。从您发布的代码来看,我有点不清楚,但看起来您正在对尚未分配值的idno执行验证。我相信您打算对设置的“值”执行验证。i、 e.将ifr.IsMatchidno.ToString更改为ifr.IsMatchvalue.ToString是的,我忘记切换了。。但我现在已经改变并尝试了,但同样的异常正在显示。