ASP.NET 4新增功能(三) 對Web標準的支持和輔助功能的增強ASP.NET 控件的早期版本有時會呈現(xiàn)不符合 HTML、XHTML 或輔助功能標準的標記。ASP.NET 4 消除了其中大部分異常情況。 1.用于可禁用控件的 CSS在 ASP.NET 3.5 中,禁用某個控件時,會將一個 disabled 屬性添加到呈現(xiàn)的 HTML 元素中。例如,下面的標記將創(chuàng)建一個已禁用的 Label 控件: <asp:Label id="Label1" runat="server" Text="Test" Enabled="false" /> 在 ASP.NET 3.5 中,原有控件設置將生成以下 HTML: <span id="Label1" disabled="disabled">Test</span> 在 HTML 4.01 中,針對 span 元素將 disabled 特性視為無效。它僅對 input 元素有效,因為它指定這些元素無法訪問。對于僅供顯示的元素(如 span),瀏覽器通常支持呈現(xiàn)禁用的外觀,但根據輔助功能標準,依賴于這種非標準行為的網頁并不可靠。 對于僅供顯示的元素,應使用 CSS 指明已禁用的可視外觀。因此在默認情況下,ASP.NET 4 將針對上面顯示的控件設置生成以下 HTML: <span id="Label1" class="aspNetDisabled">Test</span> 通過設置 DisabledCssClass 屬性,可以更改控件禁用時默認呈現(xiàn)的 class屬性的值。 2.用于驗證控件的 CSS在 ASP.NET 3.5 中,驗證控件呈現(xiàn)將默認顏色 red 呈現(xiàn)為內聯(lián)樣式。例如,下面的標記創(chuàng)建一個 RequiredFieldValidator 控件: <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Required Field" ControlToValidate="RadioButtonList1" /> ASP.NET 3.5 為驗證控件呈現(xiàn)以下 HTML: <span id="RequiredFieldValidator1" style="color:Red;visibility:hidden;">RequiredFieldValidator</span> 默認情況下,ASP.NET 4 不會呈現(xiàn)將顏色設置為紅色的內聯(lián)樣式。內聯(lián)樣式僅用于隱藏或顯示驗證程序,如下面的示例所示: <span id="RequiredFieldValidator1" style="visibility:hidden;">RequiredFieldValidator</span> 因此,ASP.NET 4 不會自動以紅色顯示錯誤提示。 3.用于隱藏字段 Div 元素的 CSSASP.NET 使用隱藏字段存儲狀態(tài)信息,如視圖狀態(tài)和控件狀態(tài)。這些隱藏字段包含在 div 元素中。在 ASP.NET 3.5 中,此 div 元素沒有 class 屬性或 id 屬性。因此,影響所有 div 元素的 CSS 規(guī)則可能會在無意中導致此 div 變?yōu)榭梢姞顟B(tài)。為避免這種問題,ASP.NET 4 使用一個 CSS 類呈現(xiàn)隱藏字段的 div 元素,該類可用于將包含隱藏字段的div與其他元素區(qū)分開來。下面的示例顯示了新類的值: <div class="aspNetHidden"> 4.用于Table、Image 和 ImageButton 控件的 CSS默認情況下在 ASP.NET 3.5 中,某些控件會將所呈現(xiàn) HTML 的 border 屬性設置為零。下面的示例顯示由 ASP.NET 3.5 中的 Table 控件生成的 HTML: <table id="Table2" border="0"> Image 控件和 ImageButton 控件也會這樣。由于此設置沒有必要,而且會提供應通過使用 CSS 提供的可視格式設置信息,因此在 ASP.NET 4 中未自動生成該屬性。 5.用于UpdatePanel 和 UpdateProgress 控件的 CSS在 ASP.NET 3.5 中,UpdatePanel 和 UpdateProgress 控件不支持 expando 屬性。因此無法針對它們呈現(xiàn)的 HTML 元素設置 CSS 類。在 ASP.NET 4 中,這些控件已更改為接受 expando 屬性,如下面的示例所示: <asp:UpdatePanel runat="server" class="myStyle"> </asp:UpdatePanel> 下面是此標記呈現(xiàn)的 HTML: <div id="ctl00_MainContent_UpdatePanel1" class="expandoclass"> </div> 6.消除不需要的外部表在 ASP.NET 3.5 中,以下控件呈現(xiàn)的HTML包裝在一個table元素中,該元素的用途是將內聯(lián)樣式應用于整個控件:
如果使用模板自定義這些控件的外觀,您則可以在模板中提供的標記中指定CSS樣式。在這種情況下,不需要額外的外部表。在 ASP.NET 4 中,通過將新的 RenderOuterTable屬性設置為false,可以避免呈現(xiàn)表。 7.向導控件的布局模板在 ASP.NET 3.5 中,Wizard 和 CreateUserWizard 控件可生成用于可視格式設置的 HTML table 元素。在 ASP.NET 4 中,可以使用 LayoutTemplate 元素指定布局。如果這樣做,將不生成 HTML table 元素。在模板中,可創(chuàng)建占位符控件來指示應在該控件中動態(tài)插入項的位置。(這與 ListView 控件的模板模型的工作方式類似。) 8.用于CheckBoxList 和 RadioButtonList 控件的新增 HTML 格式設置選項ASP.NET 3.5 使用 HTML 表元素為 CheckBoxList 和 RadioButtonList 控件的輸出設置格式。為提供不使用表進行可視格式設置的替代方法,ASP.NET 4 為 RepeatLayout 枚舉增加了兩個選項:
9.Table控件的頁眉和頁腳元素在 ASP.NET 3.5 中,可通過設置 TableHeaderRow類和TableFooterRow 類的 TableSection 屬性將 Table 控件配置為呈現(xiàn)thead和tfoot元素。在 ASP.NET 4 中,這些屬性均默認設置為適當?shù)闹怠? 10.Menu 控件的 CSS 和 ARIA 支持在 ASP.NET 3.5 中,Menu 控件使用的是HTML table 元素進行可視化格式設置,在某些配置中無法通過鍵盤來訪問該控件。ASP.NET 4 通過以下方法解決了這些問題,并提高了可訪問性:
Menu 控件的樣式呈現(xiàn)在頁面頂部的 style 塊中,而不是與出現(xiàn)的 HTML 元素內聯(lián)出現(xiàn)。如果要使用單獨的 CSS 文件來修改菜單樣式,可以將 Menu 控件的新的 IncludeStyleBlock 屬性設置為 false,這樣便不會生成樣式塊。 11.用于 HtmlForm 控件的有效 XHTML在 ASP.NET 3.5 中,HtmlForm 控件(由 <form runat="server"> 標記隱式創(chuàng)建)出現(xiàn)的 HTML form 元素同時具有 name 和 id 屬性。name 必性在 XHTML 1.1 中已棄用。因此,該控件在 ASP.NET 4 中不會呈現(xiàn) name 屬性。 12.保留控件呈現(xiàn)中的向后兼容性現(xiàn)有的ASP.NET網站中的代碼可能會假定控件是以 ASP.NET 3.5 中的方式呈現(xiàn) HTML。為避免在將該站點升級為 ASP.NET 4 時出現(xiàn)向后兼容的問題,可以在升級站點后讓 ASP.NET 繼續(xù)以 ASP.NET 3.5 中的方式生成 HTML。為此,可以在 ASP.NET 4 網站的 Web.config 文件中將 pages 元素的 controlRenderingCompatibilityVersion 屬性設置為“3.5”,如下面的示例所示: <system.web> 如果省略上述設置,默認值將與網站的目標 ASP.NET 版本相同。 |
|