Asp.Net教程,WinForm教程,Asp.Net MVC,vs2008教程,vs2010教程,Silverlight技术,源码下载,Asp.Net视频教程
全站热门标签
vs2010 Silverlight 存储过程 水晶报表 LINQ ADO.NET JavaScript DataGridView GridView AjaxPro DevExpress 面向对象 Extjs XML HTML教程 Oracle jQuery WPF MVC 分页 Office2010 GDI+ Visual C++2010 Dojo MySQL VB.NET WCF4.0 ASPxGridView WinForm textbox Sql2005 cookie Discuz!NT checkbox WCF SQL经典语句 T-SQL F# asp.net VS2008 SQL Ajax DropDownList VS2008新特性 TreeView Access Flex 页面执行时间 字符串 DataSet VB2005 回调 动画 C#时间 游戏 ASP.NET MVC
尚未分类 LINQ教程 Enterprise技术 性能优化/调试 水晶报表与打印 安全与加密 图形图像 文件处理 基础教程 Web Services 内置对象 控件示例 正则表达式\采集 ADO.NET 缓存\泛型\线程 XML技术 Url重写\静态页vs2008综合教程

使用Visual Studio 2008实现用户注册页面(2)

时间:2010-01-30 21:05来源:未知 作者:admin 点击:

双击注册按钮生成onclick事件。编写代码完成保存操作。

 protected void Button1_Click(object sender, EventArgs e)
        
{
          
//使用初始化器
            Users u = new Users()
            
{
                UserName 
= this.TextBoxUserName.Text,
                NickName 
= this.TextBoxRealName.Text,
                Password 
= this.TextBoxPassword.Text,
                EMail 
= this.TextBoxMail.Text,
                Question 
= this.DropDownList1.SelectedValue,
                Answer 
= this.TextBoxAnswer.Text,
                Birthday 
= this.TextBoxYear.Text + this.DropDownListMonth.SelectedValue + this.DropDownListDay.SelectedValue,
                Sex 
= this.RadioButtonListSex.SelectedValue.MoonToBoolon()
            }
;
            db.Users.InsertOnSubmit(u);
            db.SubmitChanges();
        }

.net提供我们6个控件,按照顺序它们在MSDN分别这样描述

1、 RequiredFieldValidator计算输入控件的值以确保用户输入值。

2、 RangeValidator 计算输入控件的值,以确定该值是否在指定的上限与下限之间。

3、 RegularExpressionValidator 计算输入控件的值,以确定该值是否与某个正则表达式所定义的模式相匹配。

4、 CompareValidator将输入控件的值同常数值或其他输入控件的值相比较,以确定这两个值是否与由比较运算符(小于、等于、大于等等)指定的关系相匹配。

5、CustomValidator计算输入控件的值以确定它是否通过自定义的验证逻辑。

6、 ValidationSummary显示 Web 页上所有验证错误的列表。

前五个控件都是通过计算输入控件的值来判断是否符合我们设计的逻辑的。他们有一些公共的常用属性

1、 ErrorMessage:错误提示信息

2、 Display用于指定验证控件中错误信息的显示方式,设置这个属性一般用于我们的页面布局。

None

验证消息从不内联显示。

Static

在页面布局中分配用于显示验证消息的空间。

Dynamic

如果验证失败,将用于显示验证消息的空间动态添加到页面。

Static也就是该控件为被激发的时候也会占据位置,Dynamic则相反。None则表示从不显示该验证控件,一般是与ValidationSummary控件联合使用。

3、 ControlToValidator:获取或设置要验证的控件的 ID

4、 SetFocusOnError:获取或设置一个值,该值指示在验证失败时是否将焦点设置到ControlToValidator属性指定的控件上。

开始设置页面:

1、 将RequiredFieldValidatort拖动到必须输入的控件后面的TD中,并设置ControlToValidator属性与待验证控件的ID一致。将SetFocusOnError设置成true,设置ErrorMessage属性。Display设置为Dynamic。

2、 将RegularExpressionValidator拖动到TextBoxUserName后面,除设置RequiredFieldValidatort设置的那几个属性以外再设置ValidationExpression 设置为 ^[a-zA-Z0-9"-".]{4,14}$ 。这个属性是用来设置用于验证的正则表达式的。^[a-zA-Z0-9"-".]表示允许的字符为字母数字与连接线‘-’,{4,14}表示字符数的范围。

同样的方式设置密码与重复密码的RegularExpressionValidator控件属性。

3、 在重复密码后添加CompareValidator属性,设置ControlToCompare属性为TextBoxPassword,ControlToValidate 属性为TextBoxRePassword。

4、 在出生日期后添加RangeValidator并设置其属性。

运行测试下我们的页面,这时除了用户名重复的验证没有做处理外其它的验证都已经在客户端做了数据验证。怎么为用户名重复添加验证呢?

在页面上方添加一个CustomValidator,以汇总所有数据验证控件错误信息。

在protected void Button1_Click(object sender, EventArgs e)添加下列代码

if (db.Users.Where(user => user.UserName.Trim() == u.UserName.Trim()).Count() > 0)
            {
                //激活客户端验证控件。
                this.CustomValidator1.ErrorMessage = "已经存在用户名为{0}的用户".MoonStringFormat(u.UserName);
                this.CustomValidator1.IsValid = false;
                return;
            }

protected void Button1_Click(object sender, EventArgs e)
        {
            Users u = new Users()
            {
                UserName = this.TextBoxUserName.Text,
                NickName = this.TextBoxRealName.Text,
                Password = this.TextBoxPassword.Text,
                EMail = this.TextBoxMail.Text,
                Question = this.DropDownList1.SelectedValue,
                Answer = this.TextBoxAnswer.Text,
                Birthday = this.TextBoxYear.Text + this.DropDownListMonth.SelectedValue + this.DropDownListDay.SelectedValue,
                Sex = this.RadioButtonListSex.SelectedValue.MoonToBoolon()
            };
            SecurityDataContext db = new SecurityDataContext();
            //var a = from user in db.User
            //        where user.UserName == u.UserName
            //        select user;
            if (db.Users.Where(user => user.UserName.Trim() == u.UserName.Trim()).Count() > 0)
            {
                //激活客户端验证控件。
                this.CustomValidator1.ErrorMessage = "已经存在用户名为{0}的用户".MoonStringFormat(u.UserName);
                this.CustomValidator1.IsValid = false;
                return;
            }
            //插入USER
            //db.User并不会执行select操作。
            db.Users.InsertOnSubmit(u);
            db.SubmitChanges();
        }

最终的HTML代码:

<%@ Page Language="C#" MasterPageFile="~/Main.Master" AutoEventWireup="true" CodeBehind="UsersManager.aspx.cs"
    Inherits="DocTest.WebForm1" Title="Untitled Page" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    <title>周边:用户管理</title>
    <style type="text/css">
        #question
        {}{
            width: 194px;
        }
    </style>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <div class="single_div">
        <fieldset>
            <fieldset>
                <div class="section_title">
                    <p>
                        请注意:带有*的项目必须填写。</p>
                    <div>
                        <asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="CustomValidator"></asp:CustomValidator>
                        <asp:ValidationSummary ID="ValidationSummary1" runat="server" />
                                    </div>
                </div>
                <legend>请选择您的用户名</legend>
                <table class="table">
                    <tr>
                        <th class="fleld_lable">
                            <label>
                                <i>*</i>用户名:</label>
                        </th>
                        <td class="fleld_input">
                            <asp:TextBox ID="TextBoxUserName" runat="server" CssClass="general_input"></asp:TextBox>
                        </td>
                        <td class="desc">
                            ●由<em>字母a~z</em>(不区分大小写)、<em>数字0~9</em>、<em>点</em>、<em>减号</em>或<em>下划线</em>组成<br />
                            ●只能以<em>数字</em>或<em>字母</em>开头和结尾,例如:beijing.2008<br />
                            ●用户名长度为<em>4~18</em>个字符
                            <div>
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" ControlToValidate="TextBoxUserName"
                                    ErrorMessage="必须输入用户名。" SetFocusOnError="True"></asp:RequiredFieldValidator>
                                <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBoxUserName"
                                    ErrorMessage="输入的用户名不符合规则。" ValidationExpression="^[a-zA-Z0-9\-\.]{4,14}$"></asp:RegularExpressionValidator>
                            </div>
                        </td>
                    </tr>
                </table>
            </fieldset>
            <fieldset>
                <legend>请填写安全设置<span>(&nbsp;以下信息对保护您的帐号安全极为重要,请您慎重填写并牢记&nbsp;)</span></legend>
                <table class="table">
                    <tr>
                        <th class="fleld_lable">
                            <label for="password">
                                <i>*</i>登录密码:</label>
                        </th>
                        <td class="fleld_input">
                            <asp:TextBox ID="TextBoxPassword" runat="server" CssClass="general_input" TextMode="Password"></asp:TextBox>
                        </td>
                        <td class="desc">
                            密码长度6~16位,字母区分大小写
                            <div>
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="TextBoxPassword"
                                    ErrorMessage="必须输入登陆密码。" Display="Dynamic"></asp:RequiredFieldValidator>
                                <asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ControlToValidate="TextBoxRePassword"
                                    ErrorMessage="输入的登陆密码不符合规则。" SetFocusOnError="True" ValidationExpression=".{6,16}$"></asp:RegularExpressionValidator></div>
                        </td>
                    </tr>
                    <tr>
                        <th class="fleld_lable">
                            <label for="repassword">
                                <i>*</i>重复登录密码:</label>
                        </th>
                        <td class="fleld_input">
                            <asp:TextBox ID="TextBoxRePassword" runat="server" CssClass="general_input" TextMode="Password"></asp:TextBox>
                        </td>
                        <td class="desc">
                            <div>
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="TextBoxRePassword"
                                    ErrorMessage="必须输入重复登陆密码。" Display="Dynamic"></asp:RequiredFieldValidator>
                                <asp:RegularExpressionValidator ID="RegularExpressionValidator3" runat="server" ControlToValidate="TextBoxPassword"
                                    ErrorMessage="输入的登陆密码不符合规则。" SetFocusOnError="True" ValidationExpression=".{6,16}$"
                                    Display="Dynamic"></asp:RegularExpressionValidator>
                                <asp:CompareValidator ID="CompareValidator1" runat="server" ControlToCompare="TextBoxPassword"
                                    ControlToValidate="TextBoxRePassword" ErrorMessage="两次输入的密码必须相同。"></asp:CompareValidator></div>
                        </td>
                    </tr>
                </table>
                <div class="hr">
                </div>
                <table class="table">
                    <tr>
                        <th class="fleld_lable">
                            <label for="question">
                                密码保护问题:</label>
                        </th>
                        <td class="fleld_input">
                            <asp:DropDownList ID="DropDownList1" runat="server" Width="191px">
                                <asp:ListItem>我就读的第一所学校的名称?</asp:ListItem>
                                <asp:ListItem>我最喜欢的休闲运动是什么?</asp:ListItem>
                                <asp:ListItem>我最喜欢的运动员是谁?</asp:ListItem>
                                <asp:ListItem>我最喜欢的物品的名称?</asp:ListItem>
                            </asp:DropDownList>
                        </td>
                        <td rowspan="2" class="desc">
                            答案长度6~30位,字母区分大小写,一个汉字占两位。用于修复帐号密码
                        </td>
                    </tr>
                    <tr>
                        <th class="fleld_lable">
                            <label for="answer">
                                您的答案:</label>
                        </th>
                        <td class="fleld_input">
                            <asp:TextBox ID="TextBoxAnswer" runat="server" CssClass="general_input"></asp:TextBox>
                        </td>
                    </tr>
                </table>
                <div class="hr">
                </div>
                <table class="table">
                    <tr>
                        <th class="fleld_lable">
                            <label>
                                <i>*</i>出生日期:</label>
                        </th>
                        <td class="fleld_input">
                            <asp:TextBox ID="TextBoxYear" runat="server" MaxLength="4" Width="40px"></asp:TextBox><label
                                for="year">年</label>
                            <asp:DropDownList ID="DropDownListMonth" runat="server">
                                <asp:ListItem>01</asp:ListItem>
                                <asp:ListItem>02</asp:ListItem>
                                <asp:ListItem>03</asp:ListItem>
                                <asp:ListItem>04</asp:ListItem>
                                <asp:ListItem>05</asp:ListItem>
                                <asp:ListItem>06</asp:ListItem>
                                <asp:ListItem>07</asp:ListItem>
                                <asp:ListItem>08</asp:ListItem>
                                <asp:ListItem>09</asp:ListItem>
                                <asp:ListItem>10</asp:ListItem>
                                <asp:ListItem>11</asp:ListItem>
                                <asp:ListItem>12</asp:ListItem>
                            </asp:DropDownList>
                            <label>
                                月</label>
                            <asp:DropDownList ID="DropDownListDay" runat="server">
                                <asp:ListItem>01</asp:ListItem>
                                <asp:ListItem>02</asp:ListItem>
                                <asp:ListItem>03</asp:ListItem>
                                <asp:ListItem>04</asp:ListItem>
                                <asp:ListItem>05</asp:ListItem>
                                <asp:ListItem>06</asp:ListItem>
                                <asp:ListItem>07</asp:ListItem>
                                <asp:ListItem>08</asp:ListItem>
                                <asp:ListItem>09</asp:ListItem>
                                <asp:ListItem>10</asp:ListItem>
                                <asp:ListItem>11</asp:ListItem>
                                <asp:ListItem>12</asp:ListItem>
                                <asp:ListItem>13</asp:ListItem>
                                <asp:ListItem>14</asp:ListItem>
                                <asp:ListItem>15</asp:ListItem>
                                <asp:ListItem>16</asp:ListItem>
                                <asp:ListItem>17</asp:ListItem>
                                <asp:ListItem>18</asp:ListItem>
                                <asp:ListItem>19</asp:ListItem>
                                <asp:ListItem>20</asp:ListItem>
                                <asp:ListItem>21</asp:ListItem>
                                <asp:ListItem>22</asp:ListItem>
                                <asp:ListItem>23</asp:ListItem>
                                <asp:ListItem>24</asp:ListItem>
                                <asp:ListItem>25</asp:ListItem>
                                <asp:ListItem>26</asp:ListItem>
                                <asp:ListItem>27</asp:ListItem>
                                <asp:ListItem>28</asp:ListItem>
                                <asp:ListItem>29</asp:ListItem>
                                <asp:ListItem>30</asp:ListItem>
                                <asp:ListItem>31</asp:ListItem>
                            </asp:DropDownList>
                            <label for="day">
                                日</label>
                        </td>
                        <td class="desc">
                            <span>用于修复帐号密码,请填写您的真实生日</span>
                            <div>
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="TextBoxYear"
                                    ErrorMessage="必须输入出生日期。" SetFocusOnError="True" Display="Dynamic"></asp:RequiredFieldValidator>
                                <asp:RangeValidator ID="RangeValidator1" runat="server" ErrorMessage="出生日期必须在1900-2008之间。"
                                    MaximumValue="2008" MinimumValue="1900" SetFocusOnError="True" ControlToValidate="TextBoxYear"></asp:RangeValidator></div>
                        </td>
                    </tr>
                    <tr>
                        <th class="fleld_lable">
                            <label>
                                <i>*</i>性别:</label>
                        </th>
                        <td class="fleld_input">
                            <asp:RadioButtonList ID="RadioButtonListSex" runat="server" RepeatColumns="2">
                                <asp:ListItem Value="0">男</asp:ListItem>
                                <asp:ListItem Value="1">女</asp:ListItem>
                            </asp:RadioButtonList>
                        </td>
                    </tr>
                    <tr>
                        <th class="fleld_lable">
                            <label for="firstname">
                                真实姓名:</label>
                        </th>
                        <td class="fleld_input">
                            <asp:TextBox ID="TextBoxRealName" runat="server" CssClass="general_input"></asp:TextBox>
                        </td>
                    </tr>
                </table>
                <div class="hr">
                </div>
                <table class="table">
                    <tr>
                        <th class="fleld_lable">
                            <label for="mail">
                                <i>*</i>邮箱:</label>
                        </th>
                        <td class="fleld_input">
                            <asp:TextBox ID="TextBoxMail" runat="server" CssClass="general_input"></asp:TextBox>
                        </td>
                        <td class="desc">
                            填写、验证保密邮箱,安全有保障
                            <div>
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" ControlToValidate="TextBoxMail"
                                    ErrorMessage="必须输入邮箱。" SetFocusOnError="True" Display="Dynamic"></asp:RequiredFieldValidator>
                            </div>
                        </td>
                    </tr>
                </table>
                <div class="hr">
                </div>
                <table>
                    <tr>
                        <th class="fleld_lable">
                            <i>*</i>
                        </th>
                        <td>
                            <asp:CheckBox ID="CheckBoxAgree" runat="server" />
                            我已看过并同意《<a href="#" target="_blank">服务条款</a>》<br />
                            <font size="2"><span></span></font>
                        </td>
                    </tr>
                </table>
            </fieldset>
            <div class="button">
                &nbsp;<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="注册帐号" />
            </div>
        </fieldset>
    </div>
</asp:Content>


 

if (db.Users.Where(user => user.UserName.Trim() == u.UserName.Trim()).Count() > 0)是通过linq来判断数据库中是否已经存在用户名为u.UserName的数据。
this.CustomValidator1.IsValid = false;来通知CustomValidator数据验证没有通过。

 

 

利用C#3.0的初始化器初始化对象u。利用代码db.Users.InsertOnSubmit(u);将u插入集合中。再使用db.SubmitChanges();将集合的变更提交到服务器。
 

 

下面开始本节的主题,数据验证。我们这里有许多数据需要验证。

1、 用户名:

a)         字母az(不区分大小写)数字09减号下划线组成

b)         只能以数字字母开头和结尾,例如:beijing.2008

c)             用户名长度为418个字符

d)             数据库中不能有重复的用户名。

e)             必填

2、 登陆密码:

a)         密码长度616

b)         重复密码要与首次输入的相同

c)         必填

3、 出生日期

a)         必填

b)         必须在1900~2008之间

4、 性别

a)         必填

5、 邮箱

a)         必填

b)         需要符合XXX@XX.XXX的规则

再看下.net提供的数据验证控件,如图

Tags:VS2008用户注册
责任编辑:admin
返回顶部
------分隔线----------------------------
推荐内容
骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价 骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价