进入旧版 | 服务项目 | 成功案例 | 联系方式 | 过客留言 | 友情链接
   
设为首页
加入收藏
联系我们
网站首页 | 新闻资讯 | 操作系统 | 办公软件 | 网络软件 | 工具软件 | 媒体动画 | 网页制作 | 网站开发 | 程序开发 | 平面设计
Photoshop视频教程 | Word入门 | Flash入门 | JScript | VBScript | ASP | PHP | ADO | 网页特效 | 3DS MAX6.0命令 | 系统进程
您当前的位置:GOODSGY电脑学习网 -> 网站开发 -> ASP -> 文章内容  
asp.net高级教程(五)---实战篇(中)

ASP.net高级教程(五)---实战篇(结合论坛用户操作谈ASP.net表单验证)(中)

www.goodsgy.com

做好准备工作,现在就要动真格的了,先让我们看看用户注册的实现。前边已经讲过,ASP.net可以实现业务逻辑和HTML代码分离,那么让我们来看看到底是如何实现的,下面这个文件是用户注册的页面部分,原型是根据我站点的风格制作的:www.goodsgy.com

<%@Page language="c#" Codebehind="Register.cs" AutoEventWireup="false" Inherits="bbs.Register" %>
<%@Register Tagprefix="My" Namespace="bbs.uctrl"%>
<HTML><head>
<TITLE>新用户注册</TITLE>
<meta name=vs_targetSchema content="HTML 4.0">
<link rel="stylesheet" href=http://www.blue1000.com/article/"images/style.CSS">
<META http-equiv=Content-Type content="text/HTML; charset=gb2312">
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#"></head>
<script language=JavaScript>
function OnPreview()
{
divPreview.innerHTML = Form1.txtSignature.value ;
}
</script>
<body>

<form method="post" runat="server" ID=Form1> www.goodsgy.com

<My:MyHead id="myHead1" runat="server"></MY:MYHEAD>www.goodsgy.com

<!----------------------外面表格形成边框-------------------------------------->
<table width='722' border='0' cellspacing=0
cellpadding='0' align='center'>
<TBODY>
<tr>
<!-------------------左边竖线---------------------------------------------->
<td bgcolor='#0097c0' width='1'>
<img src=http://www.blue1000.com/article/'images/Shim.gif' width=1>
</td>
<td width=720 align=middle><br><br><br>
<!-------------------左边竖线---------------------------------------------->www.goodsgy.com

www.goodsgy.com

<!--------------新用户注册开始---------------------------------------------->
<table width=600 align=center border=0 cellpadding=4 cellspacing=1
id="tblRegister" class=cn bgcolor=#000000 runat=server>
<TBODY>
<tr bgcolor=#ffffff>
<td colspan=3>
<p align=center>新用户注册</p>
</td>
</tr>
<!--------------用户名开始-------------------------------------------------------->
<tr bgcolor=#ffffff>
<td width=60>
用户名
</td>
<td width=300>
<ASP:TextBox id="txtUserName" maxlength=20 columns=20 runat="server"></ASP:TextBox>
<font color=red>*</font>
</td>
<td width=240>
用户笔名,4-20字符
<ASP:requiredfieldvalidator id="reqUserName" display=Dynamic
controltovalidate="txtUserName" runat=Server>
不能为空!
</ASP:requiredfieldvalidator>
<ASP:regularexpressionvalidator id="regUserName" display=Dynamic
controltovalidate="txtUserName" runat=Server validationexpression="[^']{4,20}">
用户名非法!
</ASP:regularexpressionvalidator>
<ASP:customvalidator id="cusUserName" controltovalidate="txtUserName"
onservervalidate="ValidUser" display=Dynamic runat=Server>
该用户已存在。
</ASP:customvalidator>
</td>
</tr>
<!--------------用户名结束-------------------------------------------------------->www.goodsgy.com

<!--------------用户密码开始-------------------------------------------------------->
<tr bgcolor=#ffffff>
<td width=60>
密码
</td>
<td width=300>
<ASP:TextBox id="txtPassword" maxlength=10 columns=10
textmode=Password runat=server></ASP:TextBox>
<font color=red>*</font>
</td>
<td width=240>
用户密码,4-10字符
<ASP:requiredfieldvalidator id=Requiredfieldvalidator1 display=Dynamic
controltovalidate="txtPassword" runat=Server>
不能为空!
</ASP:requiredfieldvalidator>
<ASP:regularexpressionvalidator id=Regularexpressionvalidator1 display=Dynamic
controltovalidate="txtPassword" runat=Server validationexpression="[^']{4,10}">
密码非法!
</ASP:regularexpressionvalidator>
</td>
</tr>
<!--------------用户密码结束-------------------------------------------------------->

<!--------------验证密码开始-------------------------------------------------------->
<tr bgcolor=#ffffff>
<td width=60>
验证密码
</td>
<td width=300>
<ASP:TextBox id=txtPassword1 maxlength=10 columns=10
textmode=Password runat=server></ASP:TextBox>
<font color=red>*</font>
</td>
<td width=240>
再次输入密码。
<ASP:comparevalidator id="comPassword" display=Dynamic
controltocompare="txtPassword" controltovalidate="txtPassword1" runat=Server>
两次录入的密码不同!
</ASP:comparevalidator>
</td>
</tr>
<!--------------验证密码结束-------------------------------------------------------->www.goodsgy.com

<!--------------email开始-------------------------------------------------------->
<tr bgcolor=#ffffff>
<td width=60>
Email
</td>
<td width=300>
<ASP:TextBox id="txtEmail" maxlength=100 columns=30 runat=server></ASP:TextBox>
</td>
<td width=240>
您的电子邮件地址,您可以不填,但请不要胡填。
<ASP:regularexpressionvalidator id="regEmail" display=Dynamic
controltovalidate="txtEmail" validationexpression="[^']*" runat=Server>
非法字符
</ASP:regularexpressionvalidator>
</td>
</tr>
<!--------------email结束-------------------------------------------------------->www.goodsgy.com

<!--------------个人主页开始-------------------------------------------------------->
<tr bgcolor=#ffffff>
<td width=60>
个人主页
</td>
<td width=300>
<ASP:TextBox id="txtHomepage" maxlength=150 columns=30 runat=server></ASP:TextBox>
</td>
<td width=240>
您的主页,您可以不填,但请不要胡填。
<ASP:regularexpressionvalidator id="regHomepage" display=Dynamic
controltovalidate="txtHomepage" validationexpression="[^']*" runat=Server>
非法字符。
</ASP:regularexpressionvalidator>
</td>
</tr>
<!--------------个人主页结束-------------------------------------------------------->www.goodsgy.com

<!--------------签名开始-------------------------------------------------------->
<tr bgcolor=#ffffff>
<td width=60>
签名
</td>
<td width=300>
<ASP:TextBox id="txtSignature" maxlength=150 columns=30 rows=6 textmode=MultiLine runat=server></ASP:TextBox>
</td>
<td width=240 valign=top>
<div id="divPreview">
你可以制作自己的签名,不超过255个字符,不能用script。<br><br>
</div><br>

<input type=button id="btnPreview" value="预览" onclick="OnPreview()"><br>
<ASP:regularexpressionvalidator id=Regularexpressionvalidator2 display=Dynamic
controltovalidate="txtSignature" validationexpression="[^']{0,255}" runat=Server>
使用非法字符或超过255个字符。
</ASP:regularexpressionvalidator>
</td>
</tr>
<!--------------签名结束-------------------------------------------------------->

<tr bgcolor=#ffffff>
<td colspan=3 align=center>
<ASP:button id="btnSubmit" text="确认" onclick="OnSubmit" runat=Server></ASP:button>
</td>
</tr>
</table><br><br><br>
<!----------------------------------新用户注册结束---------------------->www.goodsgy.com

<!-------------------右边竖线---------------------------------------------->
<td bgcolor='#0097c0' width='1'>
<img src=http://www.blue1000.com/article/'images/Shim.gif' width=1>
</td>
<!-------------------右边竖线---------------------------------------------->
</tr>

<!-------------------下边横线---------------------------------------------->
<tr>
<td colspan=3 height=1 bgcolor=#0097c0><img src=http://www.blue1000.com/article/'images/shim.gif'width=1 height=1></td>
</tr>
<!-------------------下边横线---------------------------------------------->
</table>www.goodsgy.com

<My:bottom id="myBottom" runat="server"></My:bottom>
</form>
</BODY></HTML>www.goodsgy.com

<!--------------------文件结束--------------------------------->www.goodsgy.com

怎么样,看上去很熟悉吧,除了页首两句及下面webform中带runat=server的webcontrol,是不是和普通的HTML一样?注意到页首第一句中的Codebehind="Register.cs"吗,它指定本页后面的代码文件是register.cs,这是ASP.net提供的一种机制,它可以将业务逻辑隐藏在与.ASPx同名的cs文件中,而运行时先把这个cs文件编译,这样不但可以提高运行效率,也使代码隐藏起来,避免了ASP中由于系统漏洞而造成源码泄漏所造成的问题。那么,这个包含业务逻辑的代码文件是怎样的呢?下面是这个文件:
namespace bbs
{
using System;
using System.Collections;
using System.ComponentModel;
using System.Data.SQL;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HTMLControls;
using bbs.uctrl ;
//using bbs.MyClass ;
using MyOwnClass ;www.goodsgy.com

/// <summary>
/// Summary description for Register.
/// </summary>
public class Register : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button btnSubmit;
protected System.Web.UI.WebControls.TextBox txtHomepage;
protected System.Web.UI.WebControls.TextBox txtEmail;
protected System.Web.UI.WebControls.CompareValidator comPassword;
protected System.Web.UI.WebControls.TextBox txtPassword1;
protected System.Web.UI.WebControls.RegularExpressionValidator Regularexpressionvalidator1;
protected System.Web.UI.WebControls.RequiredFieldValidator Requiredfieldvalidator1;
protected System.Web.UI.WebControls.TextBox txtPassword;
protected System.Web.UI.WebControls.CustomValidator cusUserName;
protected System.Web.UI.WebControls.RegularExpressionValidator regUserName;
protected System.Web.UI.WebControls.RequiredFieldValidator reqUserName;
protected System.Web.UI.WebControls.Label lblMessage;
protected System.Web.UI.WebControls.TextBox txtUserName;
public MyHead myHead1 ;www.goodsgy.com

//构造函数
public Register()
{
Page.Init += new System.EventHandler(Page_Init);
}www.goodsgy.com

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//
// Evals true first time browser hits the page
//
}
}www.goodsgy.com

protected void Page_Init(object sender, EventArgs e)
{
//
// CODEGEN: This call is required by the ASP+ Windows Form Designer.
//
InitializeComponent();
this.myHead1.Position = 2 ;
}www.goodsgy.com

/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler (this.Page_Load);
}www.goodsgy.com

//监测用户是否存在
public bool ValidUser(Object sender , string value)
{
BBSUser myUser = new BBSUser() ;
bool bExists ;
try
{
bExists = myUser.GetUser(this.txtUserName.Text) ;
}
catch(Exception e) //如果出现异常
{
#if DEBUG
Response.Write (e.Message) ;
return false ;
#endif
Server.Transfer("error.ASPx") ;

}

return !bExists ;
}www.goodsgy.com

//提交按钮点击
public void OnSubmit(Object sender , EventArgs e)
{
if (Page.IsValid)
{
//数据入库
try
{
BBSUser myUser = new BBSUser() ;
if(!myUser.GetUser(txtUserName.Text))
{
myUser.CreateUser(BBSUser.CreateType.Create , txtUserName.Text , txtPassword.Text ,
txtEmail.Text , txtHomepage.Text , "") ;
}
}
catch(Exception exp)
{
#if DEBUG
Response.Write ("出现异常:" + exp.Message) ;
return ;
#endif//DEBUG
Server.Transfer("error.ASPx") ;
}
}
}www.goodsgy.com


}www.goodsgy.com

}www.goodsgy.com

什么?还是看着眼熟?没错,是不是和前边我定义的那个类差不多?是,本来ASP.net就是把这个页当作一个对象,注意类定义的那行代码:public class Register : System.Web.UI.Page , 前面你可以理解,是定义一个Register对象,那:号后面的System.Web.UI.Page是什么意思呢?它说明这个Regsiter类是System.Web.UI.Page类的派生类(子类),也就是说Register类除了自己成员变量、属性、方法外,还继承System.Web.UI.Page类的所有公共(public)或保护(protected)成员变量、属性和方法。明白了这些,你可以安心坐下来研究代码了,做好下面关于表单验证内容的学习准备。www.goodsgy.com

在百度中搜索:asp.net高级教程(五)---实战篇(中)
在Google中搜索:asp.net高级教程(五)---实战篇(中)
在Yahoo中搜索:asp.net高级教程(五)---实战篇(中)

收藏到网摘:新浪VIVI 365key 我摘 POCO网摘 博采中心 YouNote 和讯网摘 天天收藏
[] [返回上一页] [打 印] [收 藏]

 相关文章    最新文章
· ASP.Net实现将Word转换PDF格式
· [图文] Flash制作鼠标感应Tween类动画效果..
· 初学ASP编程易犯的一个错误要注意
· ASP实现SQL语句日期格式的加减运算
· [组图] Flash实例:可爱的小青蛙闹钟
· ASP程序中输出Excel文件实例一则
· [组图] Flash也能制作特色小图标
· IIS下ASP程序运行故障的解决
· [组图] Flash实例教程:卡通MM眨眼睛动画
· PPT文稿的位置移动后,Flash动画为什么不..
 
· 初学ASP编程易犯的一个错误要注意
· ASP实现SQL语句日期格式的加减运算
· ASP程序中输出Excel文件实例一则
· ASP实现IE地址栏参数的判断
· ASP技巧:判断远程图片是否存在
· ASP去掉字符串头尾连续回车和空格的Funct..
· 深入认识学习ASP应用Cookies的技巧
· ASP实现邮件发送普通附件和嵌入附件
· 在ASP.NET中把图片保存到SQL SERVER数据库..
· 巧用枚举CommandBehavior关闭SqlDataRead..

∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
站内搜索

精彩图文
  网站导航  
操作系统 办公软件 网络软件
Vista Windows2003 WindowsXP Windows2000/NT Windows9X/ME Linux 其他 Word Excel Powerpoint Outlook 金山系列 其他 网页浏览 上传下载 联络聊天 邮件工具 服务器软件 网络辅助
工具软件 媒体动画 网页制作
系统工具 媒体工具 压缩工具 图文处理 文件管理 其他 3DMAX Authorware Director Maya 视频处理 其他 Flash Dreamweaver FireWorks FrontPage LiveMotion Golive HTML/CSS 其它
网站开发 平面设计 程序设计
ASP JSP PHP CGI JavaScript VBScript XML/SOAP Web服务器 Photoshop PhotoImpact CorelDraw Illustrator Freehand 设计欣赏 其他 VB VC .NET C/C++ DELPHI JAVA

冀ICP备05019428号
Copyright © 2004-2008 电脑学习网 Inc.All rights reserved.
TEL:13832340607
QQ:39873155
E_Mail:goodsgy(#)hotmail.com   (把(#)替换成@)
MSN:goodsgy(#)hotmail.com   (把(#)替换成@)