使用 Web 标准生成 ASP.NET 2.0 Web 站点 |
| 作者:Stephen Walther 来源:Stephen Walther 发布时间:2006-4-27 1:19:21 |
|
back to displaying our image ''' Public Shared Function FormatBookCover(ByVal Url As String) _ As String If Not IsNothing(Url) Then Return Url Else Return "Images/NoBookCover.gif" End If End Function End Class 该类中的两个最重要的函数名为 GetBooksFromAmazon 和 SearchBooksFromAmazon。第一个函数从 Default.aspx 页中调用,以便按照类别显示书籍清单。第二个函数从 Search.aspx 页中调用,以便使用户能够搜索书籍。 这两个函数都使用名为 AmazonServices 的 Web 服务代理类。该代理类是通过依次选择菜单选项 Web site、Add Web Reference 并且输入 URL http://soap.amazon.com/onca/soap?Service=AWSECommerceService 创建的。这是用于访问美国 Amazon 数据的正确的 URL。 返回页首 默认页 Default.aspx 页显示书籍类别的列表,并且显示所选类别的匹配书籍的列表(参见图 14)。Default.aspx 页包含在清单 11 中。 图 14. 默认页 清单 11. Default.aspx <%@ Page Language="VB" MasterPageFile="~/SiteMaster.master" Title="Super Super Books" %> <script runat="server"> Sub Page_Load() Dim categoryIndex As Integer = 0 If Not IsNothing(Request("index")) Then categoryIndex = Int32.Parse(Request("index")) End If MenuCategories.Items(categoryIndex).Selected = True End Sub </script> <asp:Content ID="Content1" ContentPlaceHolderID="ContentBody" Runat="Server"> <h1>Book Listings</h1> <hr /> <div id="leftColumn"> <asp:Menu id="MenuCategories" ToolTip="Book categories menu" StaticMenuItemStyle-CssClass="menuNormal" StaticSelectedStyle-CssClass="menuSelected" Runat="server"> <Items> <asp:MenuItem Text="Arts and Photography" Value="1" NavigateUrl="~/Default.aspx?index=0" /> <asp:MenuItem Text="Biographies and Memoirs" Value="2" NavigateUrl="~/Default.aspx?index=1" /> <asp:MenuItem Text="Children's Books" Value="4" NavigateUrl="~/Default.aspx?index=2" /> <asp:MenuItem Text="Computers and Internet" Value="5" NavigateUrl="~/Default.aspx?index=3" /> <asp:MenuItem Text="Cooking, Food and Wine" Value="6" NavigateUrl="~/Default.aspx?index=4" /> <asp:MenuItem Text="Science Fiction and Fantasy" Value="25" NavigateUrl="~/Default.aspx?index=5" /> </Items> </asp:Menu> </div> <div id="middleColumn"> <asp:GridView id="grdBooks" DataSourceID="srcBooks" AutoGenerateColumns="false" CssClass="books" HeaderStyle-CssClass="booksHeader" EmptyDataText="No matching results" Runat="server"> <Columns> <asp:TemplateField HeaderText="Book Cover Image"> <ItemTemplate> <asp:Image id="imgBook" ImageUrl='<%#Amazon.FormatBookCover(Eval("SmallImage.Url"))%>' AlternateText="Book cover image" Runat="server" /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Book Information"> <ItemTemplate> <h2><%#Server.HtmlEncode(Eval("ItemAttributes.Title"))%></h2> Authors: <%#Amazon.FormatAuthor(Eval("ItemAttributes.Author"))%> <br />Price: <%#Amazon.FormatPrice(Eval("ItemAttributes.ListPrice.Amount"))%> <br />Sales Rank: <%#Eval("SalesRank")%> <br /> <asp:HyperLink id="lnkDetails" NavigateUrl='<%#Eval("DetailPageURL")%>' Text="View Details" Tooltip= '<%#Amazon.FormatDetailsTooltip(Eval("ItemAttributes.Title"))%>' Runat="server" /> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> <asp:ObjectDataSource id="srcBooks" TypeName="Amazon" SelectMethod="GetBooks" Runat="server"> <SelectParameters> <asp:ControlParameter Name="CategoryId" ControlId="menuCategories" DefaultValue="1" /> </SelectParameters> </asp:ObjectDataSource> </div> </asp:Content> 该页使用下列两个 ASP.NET 控件来显示书籍清单:Menu 控件和 GridView 控件。Menu 控件用来显示书籍类别的列表,而 GridView 控件用来显示书籍列表。 GridView 控件被绑定到 ObjectDataSource 控件。ObjectDataSource 控件继而调用 Amazon 类中的 GetBooks() 方法来检索书籍列表。 返回页首 默认页的 XHTML 功能 在生成 XHTML 页时,目标之一是将文档的结构与其表示形式截然分开。为了达到这一目标,不能在 Default.aspx 页中的任何 ASP.NET 控件上设置格式属性。页格式设置被封装在通过 ASP.NET 主题与该页相关联的外部样式表中。 ASP.NET 2.0 主题使您可以更容易地遵循 Web 标准,因为它们将所有表示内容与页分开。示例站点包含一个名为 SiteTheme 的主题,该主题包含单个样式表。该主题自动使用 Web.Config 文件中的下列配置设置与每个页相关联。 <pages styleSheetTheme="SiteTheme" masterPageFile="SiteMaster.master" /> 您应该注意到,HTML 表没有用来创建页布局。尽管 XHTML 标准和可访问性标准都没有禁止您使用表来创建页布局,但这两个标准都建议您避免这样做。在示例站点中,页布局完全是由外部样式表确定的。页本身由两个 <div> 元素划分为两列。外部样式表包含确定这两个 <div> 元素位置的规则。 最后,示例站点在提供页时使用内容协商。当使用能够理解 application/xhtml+xml MIME 类型的浏览器从 Web 站点请求页时,将以 MIME 类型提供该页;否则,将以 text/html 类型提供该页。 内容协商是用 Global.asax 文件中的以下事件处理程序完成的。 Sub Application_PreSendRequestHeaders(ByVal s As Object, _ ByVal e As EventArgs) If Array.IndexOf(Request.AcceptTypes, _ "application/xhtml+xml") > -1 Then Response.ContentType = "application/xhtml+xml" End If End Sub 返回页首 默认页的可访问性功能 当无法提供 JavaScript 的文本等效内容时,WCAG 和 508 节可访问性准则都禁用客户端 JavaScript。为了满足这些准则,Default.aspx 页不依赖于客户端 JavaScript。即使您在浏览器中关闭 JavaScript,该页仍然能够正常工作。 为了满足该要求,在实现菜单时必须完成额外的工作。默认情况下,ASP.NET Menu控件为每个菜单项呈现 JavaScript 以处理客户端单击事件。但是,当为菜单项提供了 NavigateUrl 属性时,该菜单项将不再使用 JavaScript。 在示例站点中,为每个菜单项提供了一个指回到 Default.aspx 页的 NavigateUrl 属性。 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] 下一页 |
| [] [返回上一页] [打 印] |
|
文章评论 |
