通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>编程开发>>NET专区>>正文 新版上线![旧版]
注:打开慢时请稍等

asp.net高级教程(五)---实战篇(中)

http://www.iyit.net  日期:2006-6-12 1:59:59  来源:  点击:
参加讨论asp.net高级教程(五)---实战篇(结合论坛用户操作谈asp.net表单验证)(中)

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

<%@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="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>

<My:MyHead id="myHead1" runat="server"></MY:MYHEAD>

<!----------------------外面表格形成边框-------------------------------------->
<table width='722' border='0' cellspacing=0
cellpadding='0' align='center'>
<TBODY>
<tr>
<!-------------------左边竖线---------------------------------------------->
<td bgcolor='#0097c0' width='1'>
<img src="http://www.iyit.net/Files/BeyondPic/2006-6/12/0661201595837121.gif" width=1>
</td>
<td width=720 align=middle><br><br><br>
<!-------------------左边竖线---------------------------------------------->

<!--------------新用户注册开始---------------------------------------------->
<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>
<!--------------用户名结束-------------------------------------------------------->

<!--------------用户密码开始-------------------------------------------------------->
<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>
<!--------------验证密码结束-------------------------------------------------------->

<!--------------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结束-------------------------------------------------------->

<!--------------个人主页开始-------------------------------------------------------->
<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>
<!--------------个人主页结束-------------------------------------------------------->

<!--------------签名开始-------------------------------------------------------->
<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>
<!----------------------------------新用户注册结束---------------------->

<!-------------------右边竖线---------------------------------------------->
<td bgcolor='#0097c0' width='1'>
<img src="http://www.iyit.net/Files/BeyondPic/2006-6/12/0661201595837121.gif" width=1>
</td>
<!-------------------右边竖线---------------------------------------------->
</tr>

<!-------------------下边横线---------------------------------------------->
<tr>
<td colspan=3 height=1 bgcolor=#0097c0><img src="http://www.iyit.net/Files/BeyondPic/2006-6/12/0661201595917800.gif"width=1 height=1></td>
</tr>
<!-------------------下边横线---------------------------------------------->
</table>

<My:bottom id="myBottom" runat="server"></My:bottom>
</form>
</BODY></HTML>

<!--------------------文件结束--------------------------------->

怎么样,看上去很熟悉吧,除了页首两句及下面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 ;

/// <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 ;

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

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

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

/// <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);
}

//监测用户是否存在
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 ;
}

//提交按钮点击
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") ;
}
}
}


}

}

什么?还是看着眼熟?没错,是不是和前边我定义的那个类差不多?是,本来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)成员变量、属性和方法。明白了这些,你可以安心坐下来研究代码了,做好下面关于表单验证内容的学习准备。



编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:C#消息队列应用程序 -1
下一篇:asp.net高级教程(三)---实战篇
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
使用 ASP.NET 加密口令 [ASP.NET] Session 详解 从ASP迁移至ASP+
从ASP迁移至ASP+ ----------进入DataSe 从ASP迁移至ASP+ --将HTML表格转换为AS 从ASP迁移至ASP+ --急不可耐了?转换其
从ASP迁移至ASP+ --处理会话变量(Sess ASP+ 与 Java(一) ASP+ 与 Java(二)
asp+的论坛列表程序---代码部分 asp+的论坛列表程序---页面部分 用c#写的asp+域名查询程序
ASP+联结数据库 asp+文件上传增强实例 从ASP迁移至ASP+ --处理会话变量(Sess
ASP.NET学习手记:验证用户表单输入 asp+ 操作Cookie 方法大全 asp+ 现在已经被官方正式更名为 asp.ne
在ASP+ 中我们如何使用 Class 而不是组 asp+ 如何跨站抓取 页面 在 ASp+ 中的一些可能会用到的 小函数
列出asp+中所有request 的属性和数值 妙用asp+的global.asax 一个asp+ 版本的 Active Server Explor
最新更新 热点排行 推荐新闻
使用 ASP.NET 加密口令
[ASP.NET] Session 详解
从ASP迁移至ASP+
从ASP迁移至ASP+ ----------进入DataS
从ASP迁移至ASP+ --将HTML表格转换为A
CGI教程(2)
CGI教程(3)
CGI教程(5)
CGI教程(6)
CGI教程(7)
CGI教程(8)
CGI教程(5)
CGI教学:第一章 cgilib例
CGI教学:第二章 动态创建图像
CGI教学:第三章 计数器的编写方法
为ASP.NET 2.0菜单控件增加target属性
将Asp.net页面输出为HTML
在ASP.NET中防止注入攻击
ASP.NET 2.0 中的异步页功能应用
asp.net面试试题收集
QQ密码本地破解
msn8.0下载
PPLive最新内部版本揭密
珊蝴虫QQ探测隐身的招式用法
Visual Basic 概述
exeplorer.exe错误的问题的总结、解决
Authorware7.0基础与实例教程连载 第5
解决Windows中的explorer.exe出错
Windows常见文件修复技巧
Photoshop打造美女性感纹身(2)
在ASP.NET中防止注入攻击
用ASP.NET开发Web服务的五则技巧
ASP.NET 2.0 中的异步页功能应用
Windows下的虚拟主机设置全功略
危险无处不在 Html标签带来的安全隐患
网络游戏是06年互联网最具发展潜力业务
巧用ACDSee 8.0截取QQ表情每一帧
解除瑞星 诺顿遗留下的杀毒兼容问题
第一款开源AJAX安全扫描工具Sprajax
WinRAR人性化功能揭密
在ASP.NET中防止注入攻击
用ASP.NET开发Web服务的五则技巧
Linux操作系统12则经典应用技巧
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights © 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息