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

ASP.NET 2.0 資料源控件基礎架構:DataSourceControl、DataSourceView 與 WeatherDataSource 實作範例

     編輯:關於ASP.NET

資料源控件是 Visual Studio 2005 引入的新型伺服器控件,構成宣告式資料綁定架構的核心。本文解析其兩大核心類別 DataSourceControl 與 DataSourceView 的職責分工,並以 WeatherDataSource 為例示範完整實作流程。

核心架構概念

  • DataSourceControl:容器,管理一或多個具名 DataSourceView。資料綁定控件透過 DataSourceID 關聯控件,DataMember 選擇特定 View。
  • DataSourceView:封裝實際資料操作邏輯(Select、Insert、Update、Delete、可選功能檢查 Can* 屬性)。
  • 表格式 vs 階層式:對應關聯式資料表 vs XML/檔案系統等樹狀結構。內建控件皆為表格式單一 View。

WeatherDataSource 實作範例

1. 資料源控件類別

public class WeatherDataSource : DataSourceControl {
  public static readonly string CurrentConditionsViewName = "CurrentConditions";
  private WeatherDataSourceView _currentConditionsView;

  private WeatherDataSourceView CurrentConditionsView {
    get {
      if (_currentConditionsView == null)
        _currentConditionsView = new WeatherDataSourceView(this, CurrentConditionsViewName);
      return _currentConditionsView;
    }
  }

  public string ZipCode {
    get { return (string)ViewState["ZipCode"] ?? String.Empty; }
    set {
      if (String.Compare(value, ZipCode, StringComparison.Ordinal) != 0) {
        ViewState["ZipCode"] = value;
        CurrentConditionsView.RaiseChangedEvent();
      }
    }
  }

  protected override DataSourceView GetView(string viewName) {
    if (String.IsNullOrEmpty(viewName) ||
        String.Compare(viewName, CurrentConditionsViewName, StringComparison.OrdinalIgnoreCase) == 0)
      return CurrentConditionsView;
    throw new ArgumentOutOfRangeException("viewName");
  }

  protected override ICollection GetViewNames() {
    return new string[] { CurrentConditionsViewName };
  }

  // 強型別應用程式層級 API
  public Weather GetWeather() {
    return CurrentConditionsView.GetWeather();
  }
}

2. 關鍵設計要點

  • GetView/GetViewNames:提供 View 發現機制。
  • ViewState 儲存屬性 (ZipCode):支援宣告式設定與回傳持久化。
  • RaiseChangedEvent:屬性變更通知資料綁定控件重新繫結。
  • 雙重 API 介面:
     ① 標準四大操作 (Select/Insert/Update/Delete) 供資料綁定控件使用。
     ② 強型別方法 (GetWeather()) 供應用程式代碼直接呼叫。

後續擴充方向

  • 參數化查詢:引入 ParameterCollection 支援 ControlParameter、QueryStringParameter 等宣告式參數。
  • 非同步存取:實作 IAsyncDataSource、BeginExecuteSelect/EndExecuteSelect。
  • 快取支援:整合 DataSourceCache 實作資料層級快取策略。

掌握資料源控件基礎架構,是開發自訂資料源控件、整合舊有資料存取層、擴充資料綁定功能的必經之路。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved