asp.net高级教程(三)-实战篇
来源:互联网 发布:淘宝收藏软件手机版 编辑:程序博客网 时间:2024/05/21 17:53
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>结合论坛用户操作谈asp.net表单验证(上)
有了前面的知识,现在我们要进入实战。做过asp的朋友都知道表单验证是个比较头疼的问题,有经验的Web程序员有这么一句话,那就是客户端不相信服务器端,服务器端不相信客户端。什么意思呢,就是说做表单验证时服务器端程序不能假定客户端程序是正确的而不加检测,这样如果客户端关闭javascript就可能造成出错,而如果只做服务器端检测,那么需要提交到服务器端再返回,那么效率会大打折扣,并且对于用户极不方便。所以只能客户端和服务器端做两次验证。现在asp.net提供了新的表单验证机制,下面我将结合实例简单讲一下,想要了解asp.net提供的几个验证webcontrol的详细资料,可以参照我的asp+初级教程。
在讲表单验证以前,先做点准备工作。前面谈到用asp.net开发需要转换编程思维,也就是用面向对象的思想去考虑问题,bbs对象我们已经构造好了,现在让我们来看一下一个论坛系统中另外一个很重要的对象:用户。可以说,论坛系统的主体是用户,没有用户那也就谈不上什么论坛了,所以围绕用户的操作很多,比如说添加/删除用户,查询/修改用户资料等等,有些论坛还有积分机制,根据用户登录次数或发言多少来决定积分,已表明该用户的活跃程度。那么,我们应该如何来构造论坛用户这个对象呢?看看
下面的类定义:
namespaceMyOwnClass
{
usingSystem;
usingMyOwnClass;
usingSystem.Data.SQL;
usingSystem.Web.Util;
////////////////////////////////////////////////////////////////////
//
//ClassName: BBSUser
//
//Description: 论坛用户类,构造一个论坛用户对象
//
//date: 2000/02/03
//
///////////////////////////////////////////////////////////////////
publicclassBBSUser
{
//新建枚举类型,创建用户方式,创建还是修改
publicenumCreateType
{
Create=0,
Modify
}
//私有成员变量
privateintm_intID; //用户ID
privatestringm_strUserName; //用户名
privatestringm_strPassword; //密码
privatestringm_strEmail; //用户email
privatestringm_strHomepage; //个人主页
privatestringm_strSignature; //签名
//属性,全部只读
publicintID
{
get
{
returnm_intID;
}
}
publicstringUserName
{
get
{
returnm_strUserName;
}
}
publicstringPassword
{
get
{
returnm_strPassword;
}
}
publicstringEmail
{
get
{
returnm_strEmail;
}
}
publicstringHomepage
{
get
{
returnm_strHomepage;
}
}
publicstringSignature
{
get
{
returnm_strSignature;
}
}
//构造函数
publicBBSUser()
{
//
//TODO:AddConstructorLogichere
//
m_strUserName="";
m_strPassword="";
m_strEmail="";
m_strHomepage="";
m_strSignature="";
}
//根据用户名查询用户资料
publicboolGetUser(stringa_strUserName)
{
//如果用户名中包含单引号则抛出一个异常
if(a_strUserName.IndexOf("'")!=-1)
{
throw(newException("用户名包含非法字符"));
}
boolbExists=false;
MyConnectionmyConn=newMyConnection();
try
{
myConn.Open();
SQLCommandmyCommand=newSQLCommand();
myCommand.ActiveConnection=myConn;
myCommand.CommandText="select*fromBBSUserwhere
UserName='"+a_strUserName+"'";
SQLDataReadermyReader;
myCommand.Execute(outmyReader);
if(myReader.Read())
{
m_intID=(int)myReader["ID"];
m_strUserName=myReader["UserName"].ToString();
m_strPassword=myReader["password"].ToString();
m_strEmail=myReader["Email"].ToString();
m_strHomepage=myReader["Homepage"].ToString();
m_strSignature=myReader["Signature"].ToString();
bExists=true;
}
else
{
bExists=false;
}
myReader.Close();
myConn.Close();
}
catch(SQLExceptione) //如果出现异常
{
throw(newException("数据库异常:"+e.Message));
}
//返回结果
returnbExists;
}
//重载,根据用户ID查找用户
publicboolGetUser(inta_intUserID)
{
boolbExists=false;
MyConnectionmyConn=newMyConnection();
try
{
myConn.Open();
SQLCommandmyCommand=newSQLCommand();
myCommand.ActiveConnection=myConn;
myCommand.CommandText="select*fromBBSUserwhereid="+
a_intUserID.ToString();
SQLDataReadermyReader;
myCommand.Execute(outmyReader);
if(myReader.Read())
{
m_intID=(int)myReader["ID"];
m_strUserName=myReader["UserName"].ToString();
m_strPassword=myReader["password"].ToString();
m_strEmail=myReader["Email"].ToString();
m_strHomepage=myReader["Homepage"].ToString();
m_strSignature=myReader["Signature"].ToString();
bExists=true;
}
else
{
bExists=false;
}
myReader.Close();
myConn.Close();
}
catch(SQLExceptione) //如果出现异常
{
throw(newException("数据库异常:"+e.Message));
}
//返回结果
returnbExists;
}
//新建用户
publicvoidCreateUser(BBSUser.CreateTypea_enumCreateType,string
a_strUserName,
stringa_strPassword,
stringa_strEmail,
stringa_strHomepage,
stringa_strSignature)
{
//监测参数有效性
if(a_strUserName.IndexOf("'")!=-1||a_strPassword.IndexOf("'")
!=-1
||a_strEmail.IndexOf("'")!=-1||
a_strHomepage.IndexOf("'")!=-1
||a_strSignature.IndexOf("'")!=-1)
{
throw(newException("包含非法字符"));
}
try
{
MyOwnClass.MyConnectionmyConn=newMyConnection();共2页: 上一页 1 [2] 下一页 <script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
document.write(baiduCproIFrame());-->有了前面的知识,现在我们要进入实战。做过asp的朋友都知道表单验证是个比较头疼的问题,有经验的Web程序员有这么一句话,那就是客户端不相信服务器端,服务器端不相信客户端。什么意思呢,就是说做表单验证时服务器端程序不能假定客户端程序是正确的而不加检测,这样如果客户端关闭javascript就可能造成出错,而如果只做服务器端检测,那么需要提交到服务器端再返回,那么效率会大打折扣,并且对于用户极不方便。所以只能客户端和服务器端做两次验证。现在asp.net提供了新的表单验证机制,下面我将结合实例简单讲一下,想要了解asp.net提供的几个验证webcontrol的详细资料,可以参照我的asp+初级教程。
在讲表单验证以前,先做点准备工作。前面谈到用asp.net开发需要转换编程思维,也就是用面向对象的思想去考虑问题,bbs对象我们已经构造好了,现在让我们来看一下一个论坛系统中另外一个很重要的对象:用户。可以说,论坛系统的主体是用户,没有用户那也就谈不上什么论坛了,所以围绕用户的操作很多,比如说添加/删除用户,查询/修改用户资料等等,有些论坛还有积分机制,根据用户登录次数或发言多少来决定积分,已表明该用户的活跃程度。那么,我们应该如何来构造论坛用户这个对象呢?看看
下面的类定义:
namespaceMyOwnClass
{
usingSystem;
usingMyOwnClass;
usingSystem.Data.SQL;
usingSystem.Web.Util;
////////////////////////////////////////////////////////////////////
//
//ClassName: BBSUser
//
//Description: 论坛用户类,构造一个论坛用户对象
//
//date: 2000/02/03
//
///////////////////////////////////////////////////////////////////
publicclassBBSUser
{
//新建枚举类型,创建用户方式,创建还是修改
publicenumCreateType
{
Create=0,
Modify
}
//私有成员变量
privateintm_intID; //用户ID
privatestringm_strUserName; //用户名
privatestringm_strPassword; //密码
privatestringm_strEmail; //用户email
privatestringm_strHomepage; //个人主页
privatestringm_strSignature; //签名
//属性,全部只读
publicintID
{
get
{
returnm_intID;
}
}
publicstringUserName
{
get
{
returnm_strUserName;
}
}
publicstringPassword
{
get
{
returnm_strPassword;
}
}
publicstringEmail
{
get
{
returnm_strEmail;
}
}
publicstringHomepage
{
get
{
returnm_strHomepage;
}
}
publicstringSignature
{
get
{
returnm_strSignature;
}
}
//构造函数
publicBBSUser()
{
//
//TODO:AddConstructorLogichere
//
m_strUserName="";
m_strPassword="";
m_strEmail="";
m_strHomepage="";
m_strSignature="";
}
//根据用户名查询用户资料
publicboolGetUser(stringa_strUserName)
{
//如果用户名中包含单引号则抛出一个异常
if(a_strUserName.IndexOf("'")!=-1)
{
throw(newException("用户名包含非法字符"));
}
boolbExists=false;
MyConnectionmyConn=newMyConnection();
try
{
myConn.Open();
SQLCommandmyCommand=newSQLCommand();
myCommand.ActiveConnection=myConn;
myCommand.CommandText="select*fromBBSUserwhere
UserName='"+a_strUserName+"'";
SQLDataReadermyReader;
myCommand.Execute(outmyReader);
if(myReader.Read())
{
m_intID=(int)myReader["ID"];
m_strUserName=myReader["UserName"].ToString();
m_strPassword=myReader["password"].ToString();
m_strEmail=myReader["Email"].ToString();
m_strHomepage=myReader["Homepage"].ToString();
m_strSignature=myReader["Signature"].ToString();
bExists=true;
}
else
{
bExists=false;
}
myReader.Close();
myConn.Close();
}
catch(SQLExceptione) //如果出现异常
{
throw(newException("数据库异常:"+e.Message));
}
//返回结果
returnbExists;
}
//重载,根据用户ID查找用户
publicboolGetUser(inta_intUserID)
{
boolbExists=false;
MyConnectionmyConn=newMyConnection();
try
{
myConn.Open();
SQLCommandmyCommand=newSQLCommand();
myCommand.ActiveConnection=myConn;
myCommand.CommandText="select*fromBBSUserwhereid="+
a_intUserID.ToString();
SQLDataReadermyReader;
myCommand.Execute(outmyReader);
if(myReader.Read())
{
m_intID=(int)myReader["ID"];
m_strUserName=myReader["UserName"].ToString();
m_strPassword=myReader["password"].ToString();
m_strEmail=myReader["Email"].ToString();
m_strHomepage=myReader["Homepage"].ToString();
m_strSignature=myReader["Signature"].ToString();
bExists=true;
}
else
{
bExists=false;
}
myReader.Close();
myConn.Close();
}
catch(SQLExceptione) //如果出现异常
{
throw(newException("数据库异常:"+e.Message));
}
//返回结果
returnbExists;
}
//新建用户
publicvoidCreateUser(BBSUser.CreateTypea_enumCreateType,string
a_strUserName,
stringa_strPassword,
stringa_strEmail,
stringa_strHomepage,
stringa_strSignature)
{
//监测参数有效性
if(a_strUserName.IndexOf("'")!=-1||a_strPassword.IndexOf("'")
!=-1
||a_strEmail.IndexOf("'")!=-1||
a_strHomepage.IndexOf("'")!=-1
||a_strSignature.IndexOf("'")!=-1)
{
throw(newException("包含非法字符"));
}
try
{
MyOwnClass.MyConnectionmyConn=newMyConnection();共2页: 上一页 1 [2] 下一页 <script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- asp.net高级教程(三)-实战篇
- asp.net高级教程(三)-实战篇
- asp.net高级教程(三)-实战篇
- asp.net高级教程(三)-实战篇
- asp.net高级教程(三)-实战篇
- asp.net高级教程(四)---实战篇(上)
- asp.net高级教程(五)---实战篇(中)
- asp.net高级教程(五):实战篇(中)
- asp.net高级教程(五)-实战篇(中)
- asp.net高级教程(五)-实战篇(中)
- asp.net高级教程(五)-实战篇(中)
- asp.net高级教程(五)-实战篇(中)
- asp.net高级教程(五)-实战篇(中)
- asp.net高级教程(四):实战篇(上)
- asp.net高级教程(三)---对象
- asp.net高级教程(三)-对象
- asp.net高级教程(三)-对象
- asp.net高级教程(三)-对象
- 不用数据库的多用户文件自由上传投票系统(1)
- Asp.net(c#)数据库操作类
- 不用数据库的多用户文件自由上传投票系统(2)
- asp.net高级教程(五)-实战篇(中)
- 一个简单实现多条件查询的例子
- asp.net高级教程(三)-实战篇
- 用PHP和ACCESS写聊天室(十)
- asp.net高级教程(三)-对象
- 用PHP和ACCESS写聊天室(八)
- asp.net高级教程(二)-转换编程思维
- 用PHP和ACCESS写聊天室(九)
- asp.net高级教程(一)-asp.net还是asp+?
- 用PHP和ACCESS写聊天室(七)
- ASP.NET中的CodeBehind技术(4)