ASP.NET 4新增功能(三) 對Web標準的支援和協助工具功能的增強

來源:互聯網
上載者:User
文章目錄
  • 1.用於可禁用控制項的 CSS
  • 2.用於驗證控制項的 CSS
  • 3.用於隱藏欄位 Div 元素的 CSS
  • 4.用於Table、Image 和 ImageButton 控制項的 CSS
  • 5.用於UpdatePanel 和 UpdateProgress 控制項的 CSS
  • 6.消除不需要的外部表格
  • 7.嚮導控制項的布局模板
  • 8.用於CheckBoxList 和 RadioButtonList 控制項的新增 HTML 格式設定選項
  • 9.Table控制項的頁首和頁尾元素
  • 10.Menu 控制項的 CSS 和 ARIA 支援
  • 11.用於 HtmlForm 控制項的有效 XHTML
  • 12.保留控制項呈現中的向後相容性

ASP.NET 控制項的早期版本有時會呈現不符合 HTML、XHTML 或協助工具功能標準的標記。ASP.NET 4 消除了其中大部分異常情況。

1.用於可禁用控制項的 CSS

在 ASP.NET 3.5 中,禁用某個控制項時,會將一個 disabled 屬性添加到呈現的 HTML 元素中。例如,下面的標記將建立一個已禁用的 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),瀏覽器通常支援呈現禁用的外觀,但根據協助工具功能標準,依賴於這種非標準行為的網頁並不可靠。

對於僅供顯示的元素,應使用 CSS 指明已禁用的可視外觀。因此在預設情況下,ASP.NET 4 將針對上面顯示的控制項設定產生以下 HTML:

<span id="Label1" class="aspNetDisabled">Test</span>

通過設定 DisabledCssClass 屬性,可以更改控制項禁用時預設呈現的 class屬性的值。

2.用於驗證控制項的 CSS

在 ASP.NET 3.5 中,驗證控制項呈現將預設顏色 red 呈現為內聯樣式。例如,下面的標記建立一個 RequiredFieldValidator 控制項:

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"  ErrorMessage="Required Field" ControlToValidate="RadioButtonList1" />

ASP.NET 3.5 為驗證控制項呈現以下 HTML:

<span id="RequiredFieldValidator1"

  style="color:Red;visibility:hidden;">RequiredFieldValidator</span>

預設情況下,ASP.NET 4 不會呈現將顏色設定為紅色的內聯樣式。內聯樣式僅用於隱藏或顯示驗證程式,如下面的樣本所示:

<span id="RequiredFieldValidator1"

  style="visibility:hidden;">RequiredFieldValidator</span>

因此,ASP.NET 4 不會自動以紅色顯示錯誤提示。

3.用於隱藏欄位 Div 元素的 CSS

ASP.NET 使用隱藏欄位儲存狀態資訊,如檢視狀態和控制項狀態。這些隱藏欄位包含在 div 元素中。在 ASP.NET 3.5 中,此 div 元素沒有 class 屬性或 id 屬性。因此,影響所有 div 元素的 CSS 規則可能會在無意中導致此 div 變為可見狀態。為避免這種問題,ASP.NET 4 使用一個 CSS 類呈現隱藏欄位的 div 元素,該類可用於將包含隱藏欄位的div與其他元素區分開來。下面的樣本顯示了新類的值:

<div class="aspNetHidden">

4.用於Table、Image 和 ImageButton 控制項的 CSS

預設情況下在 ASP.NET 3.5 中,某些控制項會將所呈現 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 屬性。因此無法針對它們呈現的 HTML 元素設定 CSS 類。在 ASP.NET 4 中,這些控制項已更改為接受 expando 屬性,如下面的樣本所示:

<asp:UpdatePanel runat="server" class="myStyle"> </asp:UpdatePanel>

下面是此標記呈現的 HTML:

<div id="ctl00_MainContent_UpdatePanel1" class="expandoclass"> </div>

6.消除不需要的外部表格

在 ASP.NET 3.5 中,以下控制項呈現的HTML封裝在一個table元素中,該元素的用途是將內聯樣式應用於整個控制項:

  • FormView
    Login
    PasswordRecovery
    ChangePassword

如果使用模板自訂這些控制項的外觀,您則可以在模板中提供的標記中指定CSS樣式。在這種情況下,不需要額外的外部表格。在 ASP.NET 4 中,通過將新的 RenderOuterTable屬性設定為false,可以避免呈現表。

7.嚮導控制項的布局模板

在 ASP.NET 3.5 中,Wizard 和 CreateUserWizard 控制項可產生用於可視格式設定的 HTML table 元素。在 ASP.NET 4 中,可以使用 LayoutTemplate 元素指定布局。如果這樣做,將不產生 HTML table 元素。在模板中,可建立預留位置控制項來指示應在該控制項中動態插入項的位置。(這與 ListView 控制項的模板模型的工作方式類似。)

8.用於CheckBoxList 和 RadioButtonList 控制項的新增 HTML 格式設定選項

ASP.NET 3.5 使用 HTML 表元素為 CheckBoxList 和 RadioButtonList 控制項的輸出設定格式。為提供不使用表進行可視格式設定的替代方法,ASP.NET 4 為 RepeatLayout 枚舉增加了兩個選項:

  • UnorderedList.此選項指定使用 ul 和 li 元素而並不是表對 HTML 輸出進行格式設定。

  • OrderedList.此選項指定使用 ol 和 li 元素而並不是表對HTML 輸出進行格式設定。

9.Table控制項的頁首和頁尾元素

在 ASP.NET 3.5 中,可通過設定 TableHeaderRow類和TableFooterRow 類的 TableSection 屬性將 Table 控制項配置為呈現thead和tfoot元素。在 ASP.NET 4 中,這些屬性均預設設定為適當的值。

10.Menu 控制項的 CSS 和 ARIA 支援

在 ASP.NET 3.5 中,Menu 控制項使用的是HTML table 元素進行可視化格式設定,在某些配置中無法通過鍵盤來訪問該控制項。ASP.NET 4 通過以下方法解決了這些問題,並提高了可訪問性:

  • 產生的 HTML 具有無序列表(ul 和 li 元素)的結構。

  • 使用 CSS 進行可視化格式設定。

  • 菜單按照 ARIA 標準實現鍵盤訪問。可以使用方向鍵在功能表項目中進行導航。

  • ARIA 角色和屬性特性將添加到產生的 HTML 中。(通過使用 JavaScript 添加的特性而不是直接將其包含在 HTML 中,以免產生的 HTML 產生標記驗證錯誤。)

Menu 控制項的樣式呈現在頁面頂部的 style 塊中,而不是與出現的 HTML 元素內聯出現。如果要使用單獨的 CSS 檔案來修改菜單樣式,可以將 Menu 控制項的新的 IncludeStyleBlock 屬性設定為 false,這樣便不會產生樣式塊。

11.用於 HtmlForm 控制項的有效 XHTML

在 ASP.NET 3.5 中,HtmlForm 控制項(由 <form runat="server"> 標記隱式建立)出現的 HTML form 元素同時具有 name 和 id 屬性。name 必性在 XHTML 1.1 中已棄用。因此,該控制項在 ASP.NET 4 中不會呈現 name 屬性。

12.保留控制項呈現中的向後相容性

現有的ASP.NET網站中的代碼可能會假定控制項是以 ASP.NET 3.5 中的方式呈現 HTML。為避免在將該網站升級為 ASP.NET 4 時出現向後相容的問題,可以在升級網站後讓 ASP.NET 繼續以 ASP.NET 3.5 中的方式產生 HTML。為此,可以在 ASP.NET 4 網站的 Web.config 檔案中將 pages 元素的 controlRenderingCompatibilityVersion 屬性設定為“3.5”,如下面的樣本所示:

<system.web>
     <pages controlRenderingCompatibilityVersion="3.5"/>
</system.web>

如果省略上述設定,預設值將與網站的目標 ASP.NET 版本相同。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.