# Register.aspx 页面

定义： Register.aspx网页使浏览Commerce Starter Kit的用户注册为客户

使用说明： The REGISTER页面的逻辑完全被压缩到 RegisterBtn_Click事件句柄中.该句柄当用户点击客户端的Submit Image按钮时被调用

RegisterBtn_Click 事件句柄： 此句柄使用CustomersDB类的AddCustomer方法向商品数据库中添加新的顾客.这一方法内部使用CustomerAdd存储过程向商品数据库中插入新的顾客记录。

在添加新的客户记录后, RegisterBtn_Click事件句柄完成下面四部分重要内容:

1. 移动存在浏览器临时购物车的购买项到新的唯一CustomerID为主键的永久购物车里。这样可以确保如果客户浏览器失效的时候购物车内项目不会丢失。也可以使客户挂起他们的购物进程—关闭浏览器或者关机—然后几天后或者换到另一台计算机上继续购物。
2. 把一个定制的包含新登录用户全名的"ASPNETCommerce_FullName"Cookie发送到客户端。 Commerce Starter Kit application的主页--Default.aspx ，在用户下一次访问该主页时,搜索cookie 随机产生一条个性化的欢迎的消息。
3. 调用CookieAuthentication类的SetAuthCookie()静态方法. 这种内置的ASP.NET方法发出加密的cookie鉴别信息给浏览器客户端,以确认客户经鉴别的用户名. Commerce Starter Kit里, 我们使用CustomersDB.Login方法返回的顾客ID作为客户端的用户名验证.而这将作为第一项声明传给SetAuthCookie()方法.在随后对应用程序的请求中,我们能通过内置的ASP.NET页面的User.Identity.Name 属性来获取顾客ID的用户标识
4. 把浏览器转向ShoppingCart.aspx 页面,在页面内可以继续校验或购买购物车内的项目

确认用户输入： 登录页面要求用户输入姓名与邮件地址。 如果查看LoginBtn_Click事件句柄的源代码，会发现没有输入确认代码.使用内置的ASP.NETvalidation控件，可清楚的定义任何输入控件的确认约束。

ASP.NET用内置的validation控件来处理确认要求: RequiredField, CompareValidator， RegularExpressionValidator，RangeValidator， 和 CustomValidator控件。 validation控件体系是可扩展的，以便其他特定环境控件(ZIP code validators, country code validators等)也可以由第三方来开发

可以把validation控件放在页面的任何位置并使用validator控件的ControlToValidate属性链接到目标输入控件。 你可以为Text属性随意指定一段文本，当输入数据没有经过确认验证时，显示该文本。如果有必要的话，可以为一个控件设置多个validation控件共同验证该控件信息（例如，某个域是必须填写的，而且要符合某项指定的要求）。

如果页面在支持EcmaScript 1.2和动态HTML (DHTML) 4.0的浏览器中显示， validation控件能完成客户端的确认,提供了即时的回馈给用户。 Validator控件也能用服务器端代码来完成校验，因而如果浏览器不支持DHTML或者如果客户端的脚本失效,确认校验仍可执行。不必作代码的改动就可以实现上面的两种方式—在基本浏览器以及支持DHTML的浏览器上用于处理校验所需要的全部逻辑都建立在在控件内部了。

如果使用validation控件， 服务器端代码通过检验确认控件的IsValid属性确定是否用户的输入通过了校验，此外,可以检验网页的IsValid属性； 该属性是页面中全部validation控件的IsValid属性的集合。如果某一validation控件检验发生失败,页面的IsValid属性将设置为false。

上面的内容就是登录页面的工作原理，只有页面内的所有控件都有效，我们才可以继续并注册用户。如果其中一个输入域无效，页面只是再次显示。同时，validation控件负责自动向用户显示适当的出错信息。