# CheckOut.aspx 页面

说明： CheckOut.asp 页面显示了顾客购物车里的购买项目的一个列表，并提示客户下订单。当用户点击“提交”按钮的后，网页在系统中设定了一个订单，并对该订单提供了一个跟踪号码来进跟踪。
安全性注解：: CheckOut.aspx 页面只允许通过鉴别的顾客——那些有commerce starter kit 的用户号的并已经通过Login.aspx页面登录进来的顾客——观看他们的购物车并进行检验查询。 如果一位用户还没有登录，那么检验网页就不会显示。相反的，用户会被引导到登录页面。
为了约束对付帐页面的访问，在Starter Kit的 Web.config文件中加入了几个入口。下面的入口为CheckOut.aspx页面签署了一个安全符，明确地拒绝匿名用户对该页面的访问（“？”用户代表匿名用户）。
<location path="CheckOut.aspx">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
下面的登录代码专门详述了如何维护身份鉴别，并进一步说明了在哪个页面上进行身份鉴别。在commerce starter kit 应用里，鉴别操作是在Login.aspx页面中进行。
<system.web>
<authentication mode="Forms">
<forms name="CommerceAuth" loginUrl="login.aspx" protection="All" path="/"></forms>
</authentication>
</system.web> 当一名未经身份鉴别的用户企图打开结帐的页面时，ASP.NET内置的form安全认证系统可拒绝用户进入此页面并将用户转向特定的页面，要求其进行身份鉴别。
如果你愿意,你自己可以定制登录页面的外观。你也可以按照你喜欢的验证方式来验证用户的合法性。( 我们设计了通过数据库验证用户名和密码的应用程序)。在用户成功的证明自己的身份之后,(也就是说,他们通过了鉴别检查)，他们被定向到CheckOut.aspx页面，被赋予访问该页面的权力。
如想获得更多关于安全性方面的细节，查看ASP.NET Commerce Starter Kit 里Login.aspx页面了解如何操作。
显示购物车：: 页面的逻辑被封装到两个事件句柄中， Page_Load和提交按钮的SubmitBtn_Click事件句柄。
与ShoppingCart.aspx页面相同，购物车信息在DataGrid控件中显示(DataGrid control.)。当ShoppingCartList页面第一次显示时， Page_Load事件句柄通过调用ShoppingCartDB类的GetItems方法， 获得在用户购物车内的所有项目集。 GetItems方法依次使用ShoppingCartList存储过程来从数据库中获得购物选项。
一旦获取到项目集，该项目集将通过设置表格的DataGrid属性绑定到DataGrid控件，然后调用表格的 DataBind()方法，这将使得表格绕过数据源为每一项生成一行，每一项的布置由数据表控件里的单列定义的设置所决定。
当购物车的信息已经显示后，句柄调用ShoppingCartDB类的GetTotal方法来计算总成本。该值使用locale-dependent String.Format() 方法进行格式化。
结帐：: SubmitBtn_Click 事件句柄，用于提交实际的客户订单。它调用OrdersDB类的PlaceOrder方法，OrdersDB类依次调用OrdersAdd存储过程将一个新的记录插入数据库。
在记录写入后，句柄隐藏”提交”按钮，然后再次显示已设置有顾客跟踪号订单的页面。