1. 程式人生 > >ImportCatalogPart Web 伺服器控制元件概述

ImportCatalogPart Web 伺服器控制元件概述

ImportCatalogPart Web 伺服器控制元件可匯入 WebPart 控制元件的說明檔案(或用作 WebPart 控制元件的其他 ASP.NET 伺服器控制元件)。這樣就可以將該控制元件通過預先指定的設定新增到網頁中。該說明檔案使使用者可以共享 WebPart 控制元件的設定。

說明檔案與控制元件本身不同。它是以 .WebPart 副檔名結尾的 XML 檔案,包含有描述控制元件的狀態的名稱/值對。除了描述控制元件的狀態以外,說明檔案還引用該控制元件名和包含該控制元件的程式集(或檔案)。

使用者匯入說明檔案之後,該檔案中引用的 WebPart 控制元件將會顯示在 ImportCatalogPart

控制元件中,使用者可以將該控制元件新增到頁面中。

Web 部件控制元件與 ImportCatalogPart Web 伺服器控制元件關聯

ImportCatalogPart 控制元件關聯的 Web 部件控制元件可以編譯為程式集,也可以是一個使用者控制元件(.ascx 檔案)。在任一情況下,匯入的說明檔案中引用的控制元件都必須存在於包含宿主網頁的 Web 伺服器上。

使用者可使用 ImportCatalogPart 控制元件將說明檔案及其關聯的伺服器控制元件匯入網頁。此控制元件必須已存在於頁面中。如果使用者將頁面切換到目錄顯示模式,則顯示 ImportCatalogPart 控制元件。然後,使用者就可以瀏覽到該控制元件的

.WebPart 說明檔案,並匯入該控制元件。控制元件的外觀和屬性在匯入的說明檔案中指定。

在匯入 WebPart 控制元件的說明檔案之前,使用者必須首先基於現有 WebPart 控制元件建立(匯出)該檔案。滿足以下條件時,可以為一個控制元件匯出說明檔案:

·該控制元件具有用 Personalizable 屬性 (Attribute) 標記的屬性 (Property)

·Web.config 檔案已經在 webParts 元素中將 enableExport 屬性值設定為 true

·您已經將控制元件的 ExportMode 屬性值設定為 None 預設值(該值禁止匯出)以外的值。

啟用 ImportCatalogPart Web 伺服器控制元件

Web 部件頁處於編輯模式以及使用者選擇某一關聯的 WebPart 控制元件進行編輯時,在執行時將顯示 ImportCatalogPart Web 伺服器控制元件。

一、ImportCatalogPart

匯入 WebPart 控制元件(或其他用作 WebPart 控制元件的 ASP.NET 伺服器控制元件)的說明檔案,以便使用者可以使用預定義的設定將控制元件新增到網頁中。無法繼承此類。

ImportCatalogPart 控制元件使使用者可以匯入說明檔案,該檔案描述了使用者希望新增到 WebPartZoneBase 區域的 WebPart 控制元件或伺服器控制元件的設定。

使用者匯入說明檔案之後,在該檔案中引用的 WebPart 控制元件出現在 ImportCatalogPart 控制元件中,並且使用者可以將該控制元件新增到頁面上。

說明檔案與控制元件本身不同。它是以 .WebPart 副檔名結尾的 XML 檔案,幷包含名稱/值對 -- 通常是屬性值 -- 描述控制元件的狀態。

說明檔案引用的控制元件既可以被編譯為程式集,也可以是 .ascx 檔案中定義的使用者控制元件。在任一情況下,匯入的說明檔案中引用的控制元件都必須存在於承載試圖匯入該控制元件的網頁的 Web 伺服器上。說明檔案引用該控制元件名和包含該控制元件的程式集(或檔案),並且說明檔案包含影響控制元件的屬性值、外觀和行為的設定。

ImportCatalogPart 控制元件使使用者可以共享控制元件的設定。複雜的控制元件可以有許多屬性和設定。例如,在一個大型公司的典型 Intranet 站點上,一個自定義的 WebPart 控制元件可能包含許多儲存特定於使用者環境的值的屬性,如資料庫連線、部門資訊等。該控制元件還可能包含許多影響其外觀的屬性。使用者可以個性化特定站點上的控制元件並使其正常工作,匯出該控制元件的說明檔案,然後與其他使用者共享該說明檔案,這些使用者可以匯入該檔案以將該完全配置的控制元件新增到允許他們個性化的其他 Intranet 站點。只要已編譯的程式集或包含控制元件的使用者控制元件檔案存在於承載其站點的 Web 伺服器上,使用者就可以將控制元件新增到其他網站中。

使用者將說明檔案(及其關聯的伺服器控制元件)匯入網頁的機制是 ImportCatalogPart 控制元件,網頁開發人員必須將此控制元件新增到網頁。當用戶將網頁切換到目錄顯示模式後,將出現 ImportCatalogPart 控制元件,使用者可以使用此控制元件瀏覽到與要匯入的伺服器控制元件相對應的 .WebPart 說明檔案。按照 ImportCatalogPart 控制元件提供的 UI 和說明,使用者可將所需的伺服器控制元件新增到網頁中,並將其外觀和屬性完全按照匯入的說明檔案中的說明進行配置。

WebPart 控制元件的說明檔案可以匯入之前,使用者必須首先基於已存在的 WebPart 控制元件建立(匯出)該檔案。滿足以下條件時,可以為一個控制元件匯出說明檔案:

·該控制元件具有用 Personalizable 屬性 (Attribute) 標記的屬性 (Property)

·Web.config 檔案將 <webParts> 元素的 enableExport 屬性值設定為 true

·開發人員將控制元件的 ExportMode 屬性值設定為預設值 None(該值禁止匯出)以外的值。如果 ExportMode 屬性 (Property) 值設定為 NonSensitiveData,則當用戶匯出說明檔案時,任何包含具有 Personalizable 屬性 (Attribute) IsSensitive 引數的屬性 (Property) 都不會被匯出。這使得控制元件開發人員可以防止敏感資料(如連線字串)在某些情況下被匯出。

使用者可以匯出支援匯出的控制元件,方法是單擊出現在控制元件謂詞選單中的匯出謂詞,然後按照說明儲存該控制元件的 .WebPart 說明檔案。然後其他使用者可以匯入該檔案來配置他們各自的該控制元件例項。

ImportCatalogPart 類包含若干屬性。BrowseHelpText 屬性包含當用戶瀏覽到說明檔案時提供給使用者的說明文字。ImportedPartLabelText 屬性包含當匯入控制元件出現在 ImportCatalogPart 控制元件中時,用作該控制元件標籤的文字。PartImportErrorLabelText 包含當匯入控制元件說明發生錯誤時顯示的文字。如果開發人員沒有為 ImportCatalogPart 控制元件指定標題,則 Title 屬性重寫基屬性來為該控制元件指定一個預設標題。UploadButtonText 屬性包含使用者單擊以上載說明檔案的按鈕的文字,UploadHelpText 屬性包含上載過程的說明。

ImportCatalogPart 類還包含若干獨有的方法。GetAvailableWebPartDescriptions 方法檢索目錄中每個 WebPart 控制元件的 WebPartDescription 物件,這使得 ImportCatalogPart 控制元件無需建立每個伺服器控制元件的例項即可顯示其有關資訊。GetWebPart 方法根據傳遞給方法的說明獲取某個特定 WebPart 控制元件的例項。

存在與使用 ImportCatalogPart 控制元件關聯的某些內在風險。一個示例是,有人可能會將惡意資料通過用於匯入的說明檔案匯入到 Web 應用程式中。如果有人將惡意指令碼程式碼作為字串屬性的值放在說明檔案中,則當用戶匯入說明檔案並將引用的伺服器控制元件新增到網頁時,就有可能執行該指令碼。若要將匯入帶有惡意資料的說明檔案的風險降至最低,具有字串型別屬性的伺服器控制元件應該始終對屬性資料進行編碼。另一風險是通過說明檔案匯入型別。惡意使用者可以通過提交請求將許多程式集載入到 AppDomain 中,導致大量記憶體被佔用。

若要避免與匯入相關的風險,可以通過不使用匯入功能或 ImportCatalogPart 控制元件以完全禁用該功能。或者,可以限制哪些使用者可以訪問該控制元件。可以使用角色管理以程式設計方式實現此目的(請參見使用角色管理授權)。例如,載入網頁時,可以通過測試來檢視使用者是否屬於某一特定角色(如管理員角色)。如果使用者屬於該角色,則可以通過程式設計方式將 ImportCatalogPart 控制元件新增到網頁中供該使用者使用。還可通過宣告性方法來限制可以使用 ImportCatalogPart 控制元件的使用者集。在包含目錄的網頁中,可以放置兩個 CatalogZone 控制元件:一個用於可以匯入的使用者,另一個用於不可以匯入的使用者。可以匯入的使用者的區域將包含 ImportCatalogPart 控制元件。該區域本身可以置於 LoginView 控制元件的內部,這樣就可以限制該區域內的控制元件使用,使得只有經過驗證身份的使用者或指定的角色才能使用該控制元件。

1.1、示例

下面的程式碼示例演示如何以宣告和程式設計方式在網頁上使用 ImportCatalogPart 控制元件。此示例包含四部分:

·一個使用者控制元件,可用於更改 Web 部件頁上的顯示模式。

·一個網頁,包含一個 CatalogZone 控制元件和一個 ImportCatalogPart 控制元件。

·一個包含兩個自定義 WebPart 控制元件的原始碼檔案。

·對您在瀏覽器中載入頁面時示例的執行方式的說明。

此程式碼示例的第一部分是一個使用者控制元件,該控制元件使使用者能夠更改網頁上的顯示模式。應該將下面的原始碼放置在一個檔案中,並將它命名為 Displaymodemenucs.ascx Displaymodemenuvb.ascx(具體取決於所使用的語言)。

<%@ control language="C#" classname="DisplayModeMenuCS"%>

<script runat="server">

// Use a field to reference the current WebPartManager.

WebPartManager _manager;

void Page_Init(object sender, EventArgs e)

{

Page.InitComplete += new EventHandler(InitComplete);

}

void InitComplete(object sender, System.EventArgs e)

{

_manager = WebPartManager.GetCurrentWebPartManager(Page);

String browseModeName = WebPartManager.BrowseDisplayMode.Name;

// Fill the dropdown with the names of supported display modes.

foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes)

{

String modeName = mode.Name;

// Make sure a mode is enabled before adding it.

if (mode.IsEnabled(_manager))

{

ListItem item = new ListItem(modeName, modeName);

DisplayModeDropdown.Items.Add(item);

}

}

// If shared scope is allowed for this user, display the scope-switching

// UI and select the appropriate radio button for the current user scope.

if (_manager.Personalization.CanEnterSharedScope)

{

Panel2.Visible = true;

if (_manager.Personalization.Scope == PersonalizationScope.User)

RadioButton1.Checked = true;

else

RadioButton2.Checked = true;

}

}

// Change the page to the selected display mode.

void DisplayModeDropdown_SelectedIndexChanged(object sender, EventArgs e)

{

String selectedMode = DisplayModeDropdown.SelectedValue;

WebPartDisplayMode mode = _manager.SupportedDisplayModes[selectedMode];

if (mode != null)

_manager.DisplayMode = mode;

}

// Set the selected item equal to the current display mode.

void Page_PreRender(object sender, EventArgs e)

{

ListItemCollection items = DisplayModeDropdown.Items;

int selectedIndex =

items.IndexOf(items.FindByText(_manager.DisplayMode.Name));

DisplayModeDropdown.SelectedIndex = selectedIndex;

}

// Reset all of a user's personalization data for the page.

protected void LinkButton1_Click(object sender, EventArgs e)

{

_manager.Personalization.ResetPersonalizationState();

}

// If not in User personalization scope, toggle into it.

protected void RadioButton1_CheckedChanged(object sender, EventArgs e)

{

if (_manager.Personalization.Scope == PersonalizationScope.Shared)

_manager.Personalization.ToggleScope();

}

// If not in Shared scope, and if user is allowed, toggle the scope.

protected void RadioButton2_CheckedChanged(object sender, EventArgs e)

{

if (_manager.Personalization.CanEnterSharedScope &&

_manager.Personalization.Scope == PersonalizationScope.User)

_manager.Personalization.ToggleScope();

}

</script>

<div>

<asp:Panel ID="Panel1" runat="server"

Borderwidth="1"

Width="230"

BackColor="lightgray"

Font-Names="Verdana, Arial, Sans Serif" >

<asp:Label ID="Label1" runat="server"

Text="&nbsp;Display Mode"

Font-Bold="true"

Font-Size="8"

Width="120"

AssociatedControlID="DisplayModeDropdown"/>

<asp:DropDownList ID="DisplayModeDropdown" runat="server"

AutoPostBack="true"

Width="120"

OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" />

<asp:LinkButton ID="LinkButton1" runat="server"

Text="Reset User State"

相關推薦

ImportCatalogPart Web 伺服器控制元件概述

ImportCatalogPart Web 伺服器控制元件可匯入 WebPart 控制元件的說明檔案(或用作 WebPart 控制元件的其他 ASP.NET 伺服器控制元件)。這樣就可以將該控制元件通過預先指定的設定新增到網頁中。該說明檔案使使用者可以共享 WebPart

CatalogZone Web 伺服器控制元件概述

Web 部件控制元件(例如 CatalogZone 控制元件)的一項主要功能是可以讓終端使用者個性化網頁並儲存其個性化設定。CatalogZone 控制元件允許終端使用者在執行時向 Web 部件頁新增 WebPart 控制元件或其他伺服器控制元件。CatalogZone 控

ConnectionsZone Web 伺服器控制元件概述

使用 Web 部件控制元件,可以讓使用者在執行時建立兩個伺服器控制元件之間的連線,以形成連線並共享資料。一個控制元件用作資料的提供者,另一個控制元件用作資料的使用者。這兩個控制元件可以是 WebPart 控制元件或任何其他型別的伺服器控制元件。必須將它們設計為處理連線且位

ASP.NET Web 伺服器控制元件事件模型

ASP.NET 中有一個重要功能,允許您通過與客戶端應用程式中類似的、基於事件的模型來對網頁進行程式設計。舉一個簡單的例子,例如,可以向 ASP.NET 網頁中新增一個按鈕,然後為該按鈕的 Click 事件編寫事件處理程式。儘管這種情況在僅使用客戶端指令碼(在動態 HTML 中處理按鈕的 oncli

【ASP.NET】——WEB伺服器控制元件

WEB伺服器控制元件分類: 內部控制元件 列表控制元件 複雜控制元件 驗證控制元件 內部控制元件 ASP.NET引入一組稱為“內部控制元件”的新控制元件,專門用於ASP.NET 內部控制元件的使用方法與HTML控制元件相同,他們對映到HTML元素並通過

ASP.NET自定義Web伺服器控制元件-Button控制元件

using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Web; usin

asp.net中為TextBox Web伺服器控制元件新增OnClick事件

在進行Web應用開發的時候,有時會需要使點選文字框控制元件(TextBox)執行某個特殊的任務,但TextBox卻沒有按鈕那樣的OnClick事件。百度了一段時間,發現了這個解決方法,貼於此,供大家共享。 // .aspx<asp:TextBox ID="TextBo

html控制元件、html伺服器控制元件web伺服器控制元件的區別

asp.net之所以現在開發方便和快捷,關鍵是它有一組強大的控制元件庫,包括web伺服器控制元件,web使用者控制元件,web自定義控制元件,html伺服器控制元件和html控制元件等。這裡我主要說說html控制元件 、html伺服器控制元件和web伺服器控制元件的區別。     1、html控制元件:就是我

HTML伺服器控制元件Web伺服器控制元件

     asp.net之所以現在開發方便和快捷,關鍵是它有一組強大的控制元件庫,包括web伺服器控制元件,web使用者控制元件,web自定義控制元件,html伺服器控制元件和html控制元件等。這裡

Web伺服器控制元件和HTML控制元件區別

     這兩天在學習ASP.NET,遇到了Web伺服器控制元件和HTML控制元件。剛開始看見這兩個控制元件的時候,感覺很相似。 所以就想到了如下問題:這兩個控制元件有什麼區別?後來又看到了HTM

asp.net(c#)web伺服器控制元件,多選框checkboxlist控制元件

<%@ Page Language="c#" %> <script runat="server"> void Page_Load() { string msg = "You have selected the following items:<b

引發伺服器控制元件的客戶端單擊事件

    通過向控制元件的標記新增 onclick 屬性,可以將客戶端的單擊事件新增到大多數的 ASP.NET 伺服器控制元件中。但是,有些控制元件保留了 onclick 屬性,用於定義與伺服器事件的繫結。這些控制元件包括 Button、LinkButton 和 Imag

不使用ASP.NET中的伺服器控制元件將如何上傳檔案?

遇到檔案的上傳時,可能會有大部分的開發者喜歡使用伺服器控制元件,雖然很方便,但是卻不能很好的控制,不具靈活性。 現給出例子,使用html標籤語言靈活的控制檔案的上傳。 1、html部分 <input type="file" id="uploadFile" name="uploa

C#筆記——解構函式 虛方法 頁面處理事件的流程 伺服器控制元件

解構函式定義:建構函式用於實現類的例項的初始化。每個類都有建構函式,即使沒有宣告它,編譯器也會自動提供一個預設的建構函式。當建立一個物件的時候,自動呼叫建構函式,執行其中語句。使用建構函式請注意以下幾個問題:一個類的建構函式通常與類名相同建構函式不宣告返回型別,

asp net伺服器控制元件button先執行js再執行後臺的方法

                關於button這個伺服器控制元件,我一直想減少它向伺服器提交資料。那些檢測,還是在客戶端實現就好了。這就需要javascript,但是我發現僅僅有javascript還是不夠的。button伺服器控制元件的單擊事件叫“onClick”,所以javascript就無法使用這個事

asp.net 自定義伺服器控制元件屬性 [Bindable(true)]...

自定義伺服器控制元件屬性的特性:Bindable這個特性表示屬性是否可以繫結一個有效資料來源。通常使用布林值進行設定。例如:Bindable(true)。如果使用值true標記屬性,表示該屬性可以繫結一個有效資料來源,且應引發該屬性的屬性更改通知。Browsable指定屬性是否應該在屬性瀏覽器中顯示,使用布林

ASP.net[2.0示例]實現折線,柱狀,扇形圖--web chart控制元件

 推薦連結:輕鬆註冊,推薦一個網站獲得20元網路賬本 —免費的網路記帳本,今天你記賬了嗎?倍新諮詢—投資諮詢專家線上炒外匯—免費訂閱外匯月刊學不好英語,不是你的錯。因為學習內容太枯燥乏味! 為什麼不試試《看電影學英語》?

Android快樂貪吃蛇遊戲實戰專案開發教程-02虛擬方向鍵(一)自定義控制元件概述

一、自定義控制元件簡介 在本專案中,無論是遊戲主區域還是虛擬方向鍵都是通過自定義控制元件來實現的,我們有必要先對自定義控制元件有個簡單的瞭解。而且通過自定義控制元件的學習能更好的理解系統自帶控制元件的內部機制。 什麼是自定義控制元件呢? 我們平時用的控制元件(比如Button、TextVie

MFC程式新增Web瀏覽器控制元件(IE控制元件)

MFC程式新增Web瀏覽器控制元件(IE控制元件) 1. 新建一個基於對話方塊的MFC程式 這裡使用VS2010建立一個MFC Application,種類選擇基於對話方塊Dialog based。 2. 新增Web瀏覽器控制元件 2.1   選擇選單T

Dropdownlist在ajax當伺服器控制元件提交時錯誤“回發或回撥引數無效 啟用了事件驗證

專案中用到下拉列表多級聯動,開始沒用ajax全部伺服器處理,後來這樣重新整理太慢了用ajax(ajax.dll),結果就遇到 錯誤: 回發或回撥引數無效。在配置中使用 <pages enableEventValidation="true"/> 或在頁面中使用 &