使用Web Part建立個人化的ASP.NET 2.0應用程式

來源:互聯網
上載者:User

Web Parts 是Microsoft Visual Studio 2005 中的ASP.NET 2.0的新特性之一,Web Parts是構建類門戶風格(Portal-Style)的應用的架構,它繼承自SharePoint Portal Server的修正模式,可以用最小的代碼建立更豐富的表現,如使用者可以使用拖拽的方式建立頁面配置等。與它有關的控制項都在System.Web.UI.WebControls.WebParts這個命名空間裡。

  1. WebPartManager控制項

    WebPartManager是Web Parts的總控中心。它可以管理Web Parts及地區的列表;管理頁面狀態,當頁面狀態改變時觸發事件;協助Web Parts間的通訊;管理個人化等。
    每個頁面僅有一個WebPartsManager執行個體,沒有UI。

    1. <asp:WebPartManager ID="WebPartManager1" runat="server" />

     

    WebPartManger.DisplayMode
    設定或者擷取頁面的顯示模式
    BrowserDisplayMode: “正常的”顯示模式,無法編輯(預設)
    DesignDisplayMode: 允許拖拽式配置模式
    EditDisplayMode: 允許編輯Web Part的外觀及行為
    CatalogDisplayMode: 允許將Web Part添加到另外的頁面上
    ConnectDisplayMode: 允許Web Parts之間進行通訊

    DisplayMode事件
    當DisplayMode發生改變時,會觸發WebPartManager.DisplayModeChanging事件,其參數WebPartDisplayModeCancelEventArgs獲得新的顯示模式,並且允許控制者取消這種改變。
    當DispalyMode已經發生改變,會觸發WebPartManager.DisplayModeChanged事件,其參數WebPartDispalyModeEventArgs得到原來的顯示模式。

  2. WebPartZone控制項

     

    WebPartZone是在Web Parts頁面中定義的地區,它定義每個地區中的Web Part的預設顯示樣式及布局。

    1. <asp:WebPartZone ID="WebPartZone1" runat="server">
    2.  <ZoneTemplate>
    3.  </ZoneTemplate>
    4. </asp:WebPartZone>

     

    Web Part Chrome則是Web Part的標題列及邊框,它是通過WebPartZone來定義其外觀和操作的。

    在WebPartZone中可以定義各種控制項如:Web controls, user controls, custom controls等等。未實現IWebPart介面的控制項將封裝進GenericWebParts,而且需要增加以下的屬性,如Title, Description等。

  3. CatalogZone控制項

     

    PageCatalogPart: 顯示頁面上已經刪除的Web Part的列表
    DeclarativeCatalogPart: 顯示聲明在中的Web Part列表
    ImportCatalogPart: 允許.WebPart檔案中匯入的Web Part

    1. <asp:CatalogZone ID="CatalogZone1" runat="server">
    2.  <ZoneTemplate>
    3.   <asp:PageCatalogPart ID="PageCatalogPart1" runat="server" />
    4.   <asp:DeclarativeCatalogPart ID="DeclarativeCatalogPart1" runat="server">
    5.    <WebPartsTemplate>
    6.     <asp:Button ID="Button1" runat="server" Text="Button" />
    7.    </WebPartsTemplate>
    8.   </asp:DeclarativeCatalogPart>
    9.  </ZoneTemplate>
    10. </asp:CatalogZone>

     

    CatalogZone控制項允許Web Part可以互動進行添加,可以包含一個或多個CatalogPart控制項。

  4. EditorZone控制項

     

    AppearanceEditorPart: 提供修改標題即其它介面相關屬性的
    UIBehaviorEditorPart: 提供修改行為屬性的
    UI LayoutEditorPart: 提供修改Web Part的顯示狀態,地區及地區索引的
    UIPropertyGridEditorPart: 提供修改定製屬性的UI

    1. <asp:EditorZone ID="EditorZone1" runat="server">
    2.  <ZoneTemplate>
    3.   <asp:AppearanceEditorPart ID="AppearanceEditorPart1" runat="server" />
    4.   <asp:BehaviorEditorPart ID="BehaviorEditorPart1" runat="server" />
    5.   <asp:LayoutEditorPart ID="LayoutEditorPart1" runat="server" />
    6.   <asp:PropertyGridEditorPart ID="PropertyGridEditorPart1" runat="server" />
    7.  </ZoneTemplate>
    8. <asp:EditorZone>

     

    PropertyGridEditorPart允許修改自訂屬性的UI,顯示標記為[WebBrowsable]的屬性。

    1. int myVar;
    2. [WebBrowsable]
    3. public int MyProperty
    4. {
    5.  get { return myVar; }
    6.  set { myVar = value; }
    7. }

     

    EditZone控制項允許互動對Web Parts變更,可以包含一個或多個EditPart控制項。

  5. Web Part通訊

     

    通訊的提供者需要實現方法返回介面,方法特性[ConnectionProvider]
    通訊的訂閱者需要實現方法接收介面,方法特性[ConnectionConsumer]

    工作方式
    1.WebPartManager調用[ConnectionProvider]方法
    2.WebPartManager從返回參數中獲得介面
    3.WebPartManager調用[ConnectionConsumer]方法將介面傳遞給訂閱者
    4.訂閱者用給定的介面也發行者通訊

    靜態通訊方式
    在設計時就把WebPart之間相互連訊的關係在WebPartManager的StaticConnections元素中定義好了,終端使用者無法修改。

    1. <asp:WebPartManager ID="WebPartManager1" runat="server">
    2.  <StaticConnections>
    3.   <asp:WebPartConnection ID="myConnection" ConsumerID="MyConsumer" ProviderID="MyProvider" ConsumerConnectionPointID="MyConsumerPoint" ProviderConnectionPointID="MyProviderPoint"/>
    4.  </StaticConnections>
    5. </asp:WebPartManager>

     

    動態通訊方式
    用ConnectionZone控制項提供供Web Part進行通訊的UI。終端使用者可以在運行時自訂綁定WebPart之間的通訊。

    1. <asp:ConnectionsZone ID="ConnectionsZone1" runat="server" />

     

    Web Part可以類似於事件的方式相互連訊,提供者發布介面,訂閱者通過介面獲得資料。而通訊之間的聯絡是由WebPartManger來管理的,它從提供者獲得介面,向訂閱者發布介面。通訊可以是靜態,在設計時就定義好,也可以是動態,即在運行時由ConnectionsZone提供後期綁定的UI。

  6. Web Parts個人化

    使用Web Part個人化服務可以自動儲存相關的Web Part的屬性(布局,外觀等等),還可以自動儲存標記為PersonalizableAttribute的定製屬性。

    在PersonalizationAdministration類裡還提供了一系列有關個人化服務的API, 來供我們調用。

    還可以為每個使用者提供各自的個人化服務,只需要把屬性聲明為[Personalizable]就可以了。

    也可以將屬性聲明為[Personalizable (PersonalizationScope.Shared)],這樣的話,這個屬性就可以被每個使用者共用。

    Web Parts個人化服務是基於Provider模式的。Beta1的時候提供了兩個Provider:
    AccessPersonalizationProvider(Access)
    AqlPersonalizationProvider(SQL Server)
    在Beta2中AccseePersonalizationProvider已經被移除了。
    也可以使用自訂Provider增加對其它資料來源的支援。

    如使用SQL Server的Provider需要在Web.config檔案中加入聲明:

    1. <webParts>
    2.  
    3. <personalization defaultProvider="AspNetSqlPersonalizationProvider" />
    4. </webParts>

     

  7. 定製Web Parts

    任何控制項均可以作為Web Parts來運行,但是最好是採用繼承自WebPart的控制項。這樣可以得到更好的應用,如可以控制控制項標題及其它與UI相關的屬性,控制項的AllowClose, AllowZoneChange, AllowMinimize和其它行為屬性,可以應用於基於角色的安全特性,也可以增加一些自訂的操作,包括匯出Web Part等等。

    增加自訂動作:

    1. public class MyWebPart : WebPart
    2. {
    3.  public override WebPartVerbCollection Verbs
    4.  {
    5.   get
    6.   {
    7.    EnsureChildControls();
    8.    WebPartVerb verb = new WebPartVerb(new WebPartEventHandler(OnClearResults));
    9.    verb.Text = "Clear Results";
    10.    WebPartVerb[] verbs = new WebPartVerb[] { verb };
    11.    return new WebPartVerbCollection(base.Verbs, verbs);
    12.   }
    13.  }
    14.  
    15.  void OnClearResult(object sender, WebPartEventArgs args){...}
    16. }

     

  8. 匯出Web Part

    WebPart.ExprotMode屬性

     

    WebPartExportMode.None (預設)
    WebPartExportMode.All 允許匯出所有資料
    WebPartExportMode.NonSensitiveData 允許匯出非敏感性資料

    可以在建構函式中對Web Part的匯出屬性進行定義

    1. public MyWebPart()
    2. {
    3.  this.ExportMode = WebPartExportMode.All;
    4. }

     

    也可以選擇某些屬性被匯出,在屬性聲明中定義即可。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.