首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET 控制項 10 大實用屬性深度解析

     編輯:ASP.NET 基礎

1. ClientIDMode —— 掌控客戶端 ID 生成規則

ASP.NET 4.0 引入,解決舊版自動生成 ID(如 ctl00_ContentPlaceHolder1_GridView1)難以在 JavaScript 中預測的問題。四種模式:

  • AutoID:預設,相容舊版行為。
  • Static:ID 固定為指定值,不再自動加前綴。
  • Predictable:由開發者指定後綴,配合容器 ID 組合,適合重複項目(如 ListView)。
  • Inherit:繼承父控制項或頁面設定。

頁面層級設定:<%@ Page ClientIDMode="Predictable" %>;應用程式層級在 web.config:

<system.web>
  <pages clientIDMode="Predictable"></pages>
</system.web>

2. Meta Keywords / Meta Description —— 動態 SEO 標籤

Page 類別新增兩屬性,可在執行期由資料庫動態賦值:

<%@ Page Language="C#" Keywords="關鍵字1,關鍵字2" Description="頁面描述" %>

或在 Code-behind:Page.Keywords = "..."; Page.Description = "...";。

3. EnablePersistedSelection —— 資料綁定控制項跨頁保持選取

GridView、ListView 等支援。啟用後,換頁時仍保持「第 N 行被選取」而非「索引 N 被選取」。

<asp:ListView ID="topRanks" runat="server" EnablePersistedSelection="True" 
    DataSourceID="dsRanks" DataKeyNames="rankid"> ... </asp:ListView>

4. AutoEventWireup —— 頁面事件自動連結

預設 true,允許 Page_Load 等慣用名稱自動綁定事件。缺點:限制事件處理器命名彈性,高流量網站有效能損耗(MSDN 文檔)。建議設為 false 並顯式綁定。

5. Page.Header —— 動態操作 <head> 區塊

可在執行期新增樣式表、腳本、Meta 標籤:

this.Header.Title = "動態標題";
HtmlLink printLink = new HtmlLink();
printLink.Attributes.Add("rel", "stylesheet");
printLink.Attributes.Add("href", "css/print.css");
this.Header.Controls.Add(printLink);

列印專用樣式表切換的理想場景。

6. AssociatedControlID —— Label 與輸入控制項關聯

點擊 Label 時焦點自動移至關聯控制項,並支援熱鍵:

<asp:Label ID="lblUserName" AssociatedControlID="txtUserName" Text="使用者名稱:" runat="server" />
<asp:TextBox ID="txtUserName" runat="server" />

7. ControlState —— 關鍵狀態的可靠保存

ViewState 可被頁面層級關閉,但 ControlState 不會。適合儲存控制項核心運作所需資料(如 GridView 分頁索引)。需覆寫 OnInit 註冊:Page.RegisterRequiresControlState(this);,並實作 SaveControlState/LoadControlState。謹慎使用,因會增加頁面負載。

8. PreserveProperty (Rick Strahl 方案) —— 替代 ViewState 的輕量選擇

僅保存指定控制項的指定屬性,減少 ViewState 體積。參考:Implementing an ASP.NET PreserveProperty Control。

9. 瀏覽器特定屬性值 —— 依 User-Agent 區分輸出

ASP.NET 2.0 支援在標籤中依瀏覽器設定不同屬性值:

<asp:Button runat="server" 
    ie:OnClientClick="alert('Hello IE!')" 
    mozilla:OnClientClick="alert('Hello Firefox!')" 
    Text="通用按鈕" OnClientClick="alert('Hello others!')" />

前綴對應 browserCaps 定義的瀏覽器 ID。

10. PreviousPageType —— 跨頁回傳強型別存取

在目標頁面宣告來源頁面虛擬路徑,即可直接存取來源頁面的 public 屬性,無需 FindControl:

<%@ PreviousPageType VirtualPath="~/firstpage.aspx" %>
// 目標頁面代碼
var prop = PreviousPage.FirstProperty;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved