# OrderList.aspx 页面

说明： OrderList页面显示了登录用户在commerce starter kit 应用程序内已下的所有订单的列表

使用说明： 当用户点击在commerce starter kit application里任何页面顶部的"Account"按钮时，将显示OrderList.aspx页面。

只有授权用户才可以通过配置系统访问到OrderList.aspx页面。 OrderList.aspx网页逻辑完全被封装到其Page Load事件句柄中。当网页OrderLIst.asp被浏览器的客户端访问的时候，该网页事件句柄才被调用。

构造细节： OrderList.aspx页面已经被设置成拒绝身份未鉴别的客户的访问。这一功能是通过在commerce starter kit的Web.config 文件里添加授权入口而实现的。

<location path="OrderList.aspx">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>

上面的入口明确地拒绝匿名使用者访问OrderList.aspx页面(在上面的配置入口，“？”代表匿名用户)。当未鉴别身份的用户企图访问网页的时候,内置的基于窗体的ASP.NET安全系统会自动将他们定向到一个配置好的登录页面。下面的commerce starter kit入口特别说明了Login.aspx网页将是指定的登陆页面。

<system.web>
<authentication mode="Forms">
<forms name="CommerceAuth" loginUrl="login.aspx" protection="All" path="/"></forms>
</authentication>
</system.web>

开发者可是自由地定制登录页面的外观,但是他们也许会制作任何对于确认用户身份必要的检验机制。(在commerce starter kit application中我们检验基于数据库的用户名和口令)。在客户成功的证明自己的身份后(也就是:他们的用户名和口令都是正确的)，他们被转向OrderDetails.aspx网页并可以有权查看该网页.请查看Login.aspx 网页了解在commerce starter kit application内这一做法是如何实现的)。

Page_Load 事件句柄： Page_Load事件句柄的代码利用页面用户对象来查看已链接到网页的用户的可鉴别身份。对于commerce starter kit application来说，鉴别的姓名是客户唯一的客户标识ID, OrderDetails.aspx Page_Load 事件句柄便利用了客户ID值调用ASPNET.StarterKit.Commerce.OrdersDB 类的GetOrderDetails方法来获取关于顾客已经下的某一订单的细节，这一方法内部使用了OrdersList存储过程来从商品数据库中获得产品信息。

订单内的特定记录使用来显示。不同的风格属性按照来设置，可以使其看起来美观大方。不同的服务控件也可用于输出关于订单(订单总价格,装运时间,订单日期等等)的全体信息。

性能说明：

- 因为用于转入页面的数据本身不是缓冲的(只有提交的输出是缓冲的)，数据从数据库中使用 DataReader而不是DataSet的方式返回。 DataReader 是只允许向前的，只读的 "firehose"数据指针，它比dataset要快的多。需要强调的一点是，在DataBind()被调用后，被DataReader 使用的数据链接必须确定关掉.在commerce starter kit application里，middle-tier方法返回SQLDataReaderResults类,该类包括DataReader和Close()方法。在数据绑定后，该页面关闭data reader并使用result.Close()方法 的链接。
- 由于页面没有返回它本身-也就是说，没有按钮能够将页面返回到ProductsList.aspx-我们没有必要经过请求保留页面的控件值。结果我们不能通过向页面设置添加"MaintainState=false"属性控件状态管理。这将缩小页面的大小，减缓页面处理的速度。
- 因为页面没有使用任务状态，我们没有要求任务固有对象在页面内可用。因而，我们通过向页面设置添加"EnableSessionState= false"属性，使任务状态管理无效。