使用 Web 标准生成 ASP.NET 2.0 Web 站点 |
| 作者:Stephen Walther 来源:Stephen Walther 发布时间:2006-4-27 1:19:21 |
|
当您单击菜单项时,将重新加载 Default.aspx 页。Page_Load 事件处理程序用来检测单击了哪个菜单项,而且该子例程用当前菜单选择更新菜单。 使用 Menu 控件的好处是,Menu 控件自动生成“跳过导航”链接。如果使用 Tab 键浏览 Default.aspx 页中的每个元素,会注意到(观察浏览器的状态栏)有一个跳过菜单内容的隐藏链接。Menu 控件使您能够自动满足 WCAG 和 508 节准则,该准则要求您提供相应的方法以跳过重复性的导航链接。 返回页首 搜索页 搜索页包含一个表单,使 Web 站点的用户能够通过提供书籍作者、书名、书籍关键字或者通过提供复杂查询来搜索书籍(参见图 15)。查询的结果显示在 GridView 控件中。Search.aspx 页包含在清单 12 中。 图 15. 搜索页 清单 12. Search.aspx <%@ Page Language="VB" MasterPageFile="~/SiteMaster.master" Title="Search Books" %> <script runat="server"> Protected Sub btnQuickSearch_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) txtPowerSearch.Text = String.Empty End Sub Protected Sub btnPowerSearch_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) txtAuthor.Text = String.Empty txtTitle.Text = String.Empty txtKeywords.Text = String.Empty End Sub </script> <asp:Content ID="Content1" ContentPlaceHolderID="ContentBody" Runat="Server"> <h1>Search Books</h1> <hr /> <div id="leftColumn"> <fieldset class="quickSearch"> <legend>Quick Search</legend> <asp:Label Text="Author:" AssociatedControlID="txtAuthor" AccessKey="a" Runat="server" /> <asp:TextBox id="txtAuthor" ToolTip="Search by author" Runat="server" /> <span class="accessKey">access key is a</span> <br /> <asp:Label Text="Title:" AssociatedControlID="txtTitle" AccessKey="t" Runat="server" /> <asp:TextBox id="txtTitle" ToolTip="Search by title" Runat="server" /> <span class="accessKey">access key is t</span> <br /> <asp:Label Text="Keywords:" AssociatedControlID="txtKeywords" AccessKey="k" Runat="server" /> <asp:TextBox id="txtKeywords" ToolTip="Search by keywords" Runat="server" /> <span class="accessKey">access key is k</span> <br /> <asp:Button id="btnQuickSearch" Text="Quick Search Now" ToolTip="Peform quick search" AccessKey="s" Runat="server" /> <span class="accessKey">access key is s</span> </fieldset> <br /> <fieldset class="powerSearch"> <legend>Power Search</legend> <asp:Label Text="Query:" AssociatedControlID="txtPowerSearch" AccessKey="q" Runat="server" /> <asp:TextBox id="txtPowerSearch" ToolTip="Power search query text" TextMode="MultiLine" Columns="20" Rows="3" Runat="server" /> <span class="accessKey">access key is q</span> <br /> <asp:Button id="btnPowerSearch" Text="Power Search Now" ToolTip="Perform power search" AccessKey="p" Runat="server" /> <span class="accessKey">access key is p</span> </fieldset> </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="SearchBooksFromAmazon" Runat="server"> <SelectParameters> <asp:ControlParameter Name="Author" ControlId="txtAuthor" ConvertEmptyStringToNull="true" /> <asp:ControlParameter Name="Title" ControlId="txtTitle" ConvertEmptyStringToNull="true" /> <asp:ControlParameter Name="Keywords" ControlId="txtKeywords" ConvertEmptyStringToNull="true" /> <asp:ControlParameter Name="PowerSearch" ControlId="txtPowerSearch" ConvertEmptyStringToNull="true" /> </SelectParameters> </asp:ObjectDataSource> </div> </asp:Content> 返回页首 搜索页的 XHTML 功能 就像默认页一样,搜索页不包含任何表示性元素或属性。搜索页的样式和布局完全封装在通过 ASP.NET 主题与该页相关联的外部样式表中。 同样,像默认页一样,搜索页使用内容协商。如果有人用能够识别 application/xhtml+xml MIME 类型的浏览器请求搜索页,则将以该 MIME 类型提供该页;否则,将以 text/html 类型提供该页。 返回页首 搜索页的可访问性功能 搜索页包含一个表单。或者,更准确地说,该页包含被划分为两个子表单的单个表单。它包含一个“Quick Search”表单和一个“Power Search”表单。 请注意,该表单用 HTML <fieldset> 标记划分为两个子表单。<fieldset> 标记使您能够将逻辑相关的表单元素组合在一起。可访问性准则要求您在处理复杂表单时使用 <fieldset> 标记(请参阅 WCAG 12.3)。 而且,请注意,每个表单字段都与其标签显式关联。每个 ASP.NET 控件都包含一个指向其相应表单字段的 AssociatedControlID 属性。标签和字段之间的这些显式关联可以帮助屏幕阅读器的用户确定特定表单字段的用途。 最后,请注意每个 Label 控件都分配了一个访问键。访问键使您无需使用鼠标就能够方便地浏览表单字段。例如,如果按 ALT+A,则可以输入作者的姓名。如果随后按 ALT+S,则会提交“Quick Search”表单,并且在 GridView 中显示结果。换句话说,无需触摸鼠标即可方便 上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] 下一页 |
| [] [返回上一页] [打 印] |
|
文章评论 |
