C# 验证在3层中不起作用
我的DAT/DAL类代码很好。 在我的业务逻辑层。。我想使用正则表达式验证ID号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
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是的,我忘记切换了。。但我现在已经改变并尝试了,但同样的异常正在显示。