统计在线人数...

使用 Web 标准生成 ASP.NET 2.0 Web 站点(10)

[ 来源:转载 | 作者:佚名 | 时间:2006-5-29 上午 10:58:29 | 浏览:统计中... ]

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 属性。当您单击菜单项时,将重新加载 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" OnClick="btnQuickSearch_Click" />       
    <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" OnClick="btnPowerSearch_Click" />       
    <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:TemplateFiel

[1] [2]  下一页

共有0人参与评价,平均得分:0分
评论内容只代表网友观点,与本站立场无关! 查看完整内容
   

当前在线人数
QQ:748838 MSN:allen_xia#msn.com E-mail:allenxia666#126.com QQ群:站长联盟北方区-北京(28200145) 站长联盟南方区-上海(67713522)