WebPartDisplayModeCollection Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Содержит коллекцию WebPartDisplayMode объектов. Этот класс не может быть унаследован.
public ref class WebPartDisplayModeCollection sealed : System::Collections::CollectionBase
public sealed class WebPartDisplayModeCollection : System.Collections.CollectionBase
type WebPartDisplayModeCollection = class
inherit CollectionBase
Public NotInheritable Class WebPartDisplayModeCollection
Inherits CollectionBase
- Наследование
Примеры
В следующем примере кода демонстрируется работа с классом WebPartDisplayModeCollection . Ключевой точкой является то, что необходимо наследовать от WebPartManager класса и переопределить CreateDisplayModes метод, чтобы добавить пользовательский WebPartDisplayMode объект в WebPartDisplayModeCollection коллекцию, созданную элементом WebPartManager управления.
В этом примере кода есть пять частей:
Пользовательский элемент управления, позволяющий изменять режимы отображения на странице веб-частей.
Веб-страница, на которую размещаются другие элементы управления.
Элемент управления пользователя, который находится в WebPartZone зоне на веб-странице, и позволяет вводить и отображать текст в метке.
Файл исходного кода, содержащий два элемента управления. Один — это пользовательский элемент управления. Другой — это пользовательский WebPartManagerWebPartDisplayMode объект, добавляемый в режимы отображения страницы по умолчанию.
Объяснение того, как работает пример.
Исходный код для первой части примера кода, пользовательский элемент управления, позволяющий изменять режимы отображения, поступает из другого раздела. Для работы этого примера кода необходимо получить ASCX-файл для пользовательского элемента управления из пошагового руководства. Изменение режимов отображения на странице веб-частей и размещение файла в той же папке, что и страница .aspx в этом примере кода.
Второй частью примера является веб-страница. Он содержит два WebPartZone элемента управления, как пользовательские элементы управления, так и пользовательский WebPartManager элемент управления. Обратите внимание на Register директивы в верхней части страницы, чтобы ссылаться на пользовательские элементы управления и пространство имен для скомпилированных элементов управления.
<%@ Page Language="C#" %>
<%@ Register Src="TextDisplaycs.ascx"
TagName="TextDisplay"
TagPrefix="uc2" %>
<%@ Register Src="DisplayModeMenuCS.ascx"
TagName="DisplayModeMenuCS"
TagPrefix="uc1" %>
<%@ Register Namespace="Samples.AspNet.CS.Controls"
TagPrefix="sample"
Assembly="CustomDisplayModeCS" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<uc1:DisplayModeMenuCS id="menu1" runat="server" />
<div>
<sample:NewWebPartManager runat="server" ID="wpgm1" />
<br />
<table style="width: 100%">
<tr valign="top" align="center" >
<td style="width: 100px; height: 123px">
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<uc2:TextDisplay ID="TextDisplay1" runat="server" />
</ZoneTemplate>
</asp:WebPartZone>
</td>
<td style="width: 100px; height: 123px">
<asp:WebPartZone ID="WebPartZone2" runat="server" />
</td>
</tr>
</table>
<br />
</div>
</form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ Register Src="TextDisplayvb.ascx"
TagName="TextDisplay"
TagPrefix="uc2" %>
<%@ Register Src="DisplayModeMenuVB.ascx"
TagName="DisplayModeMenuVB"
TagPrefix="uc1" %>
<%@ Register Namespace="Samples.AspNet.VB.Controls"
TagPrefix="sample"
Assembly="CustomDisplayModeVB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<uc1:DisplayModeMenuVB id="menu1" runat="server" />
<div>
<sample:NewWebPartManager runat="server" ID="wpgm1" />
<br />
<table style="width: 100%">
<tr valign="top" align="center" >
<td style="width: 100px; height: 123px">
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<uc2:TextDisplay ID="TextDisplay1" runat="server" />
</ZoneTemplate>
</asp:WebPartZone>
</td>
<td style="width: 100px; height: 123px">
<asp:WebPartZone ID="WebPartZone2" runat="server" />
</td>
</tr>
</table>
<br />
</div>
</form>
</body>
</html>
Третья часть примера — это элемент управления пользователем для ввода и отображения текста. Обратите внимание, что для создания нескольких представлений пользовательского интерфейса используется MultiView элемент управления. Одно представление отображается с помощью кнопки, другой без. Обратите внимание, что в переопределенном OnPreRender методе код проверяет, находится ли страница в пользовательском режиме отображения, а если да, отображается первое представление пользовательского элемента управления, которое включает кнопку. Если страница не находится в пользовательском режиме отображения (например, если страница находится в режиме обзора или конструктора), кнопка скрыта.
Это важно
В этом примере есть текстовое поле, которое принимает входные данные пользователя, которое является потенциальной угрозой безопасности. По умолчанию ASP.NET веб-страницы проверяют, что входные данные пользователя не включают скрипт или ЭЛЕМЕНТЫ HTML. Дополнительные сведения см. в разделе "Обзор эксплойтов скриптов".
<%@ Control Language="C#" %>
<%@ Import Namespace="Samples.AspNet.CS.Controls" %>
<script runat="server">
private string textContent;
[Personalizable]
public string TextContent
{
get { return textContent; }
set { textContent = value; }
}
protected override void OnPreRender(EventArgs e)
{
Label1.Text = this.textContent;
int viewIndex = 0;
WebPartManager wpmg =
WebPartManager.GetCurrentWebPartManager(this.Page);
NewWebPartManager myNewWpmg = wpmg as NewWebPartManager;
if (myNewWpmg != null)
{
WebPartDisplayMode mode =
myNewWpmg.SupportedDisplayModes[myNewWpmg.InLineEditDisplayMode.Name];
if (mode != null && myNewWpmg.DisplayMode == mode)
{
viewIndex = 1;
}
}
this.MultiView1.ActiveViewIndex = viewIndex;
}
protected void Button1_Click(object sender, EventArgs e)
{
this.TextContent = TextBox1.Text;
WebPartManager wpmg =
WebPartManager.GetCurrentWebPartManager(this.Page);
WebPartDisplayMode mode =
wpmg.SupportedDisplayModes[WebPartManager.BrowseDisplayMode.Name];
if (mode != null)
wpmg.DisplayMode = mode;
}
</script>
<asp:MultiView ID="MultiView1" runat="server">
<asp:View ID="View1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Label" />
</asp:View>
<asp:View ID="View2" runat="server">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" OnClick="Button1_Click"
runat="server" Text="Button" />
</asp:View>
</asp:MultiView>
<%@ Control Language="vb" %>
<%@ Import Namespace="Samples.AspNet.VB.Controls" %>
<script runat="server">
Private _textContent As String
<Personalizable()> _
Public Property TextContent() As String
Get
Return _textContent
End Get
Set(ByVal value As String)
_textContent = Value
End Set
End Property
Protected Overrides Sub OnPreRender(ByVal e As EventArgs)
Label1.Text = Me.TextContent
Dim viewIndex As Integer = 0
Dim wpmg As WebPartManager = _
WebPartManager.GetCurrentWebPartManager(Me.Page)
Dim myNewWpmg As NewWebPartManager = _
CType(wpmg, NewWebPartManager)
If Not (myNewWpmg Is Nothing) Then
Dim mode As WebPartDisplayMode = _
myNewWpmg.SupportedDisplayModes(myNewWpmg.InLineEditDisplayMode.Name)
If Not (mode Is Nothing) AndAlso _
myNewWpmg.DisplayMode Is mode Then
viewIndex = 1
End If
End If
Me.MultiView1.ActiveViewIndex = viewIndex
End Sub
Protected Sub Button1_Click(ByVal sender As Object, _
ByVal e As EventArgs)
Me.TextContent = TextBox1.Text
Dim wpmg As WebPartManager = _
WebPartManager.GetCurrentWebPartManager(Me.Page)
Dim mode As WebPartDisplayMode = _
wpmg.SupportedDisplayModes(WebPartManager.BrowseDisplayMode.Name)
If Not (mode Is Nothing) Then
wpmg.DisplayMode = mode
End If
End Sub
</script>
<asp:MultiView ID="MultiView1" runat="server">
<asp:View ID="View1" runat="server">
<asp:Label ID="Label1" runat="server" Text="Label" />
</asp:View>
<asp:View ID="View2" runat="server">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" OnClick="Button1_Click"
runat="server" Text="Button" />
</asp:View>
</asp:MultiView>
Четвертая часть примера — исходный файл для двух пользовательских классов. Обратите внимание, что настраиваемый WebPartManager класс переопределяет CreateDisplayModes метод, вызывает базовый метод для добавления всех режимов отображения по умолчанию, а затем добавляет настраиваемый режим отображения. Класс пользовательского режима отображения, InLineEditDisplayModeпросто наследуется от WebPartDisplayMode, задает имя режима отображения в конструкторе и переопределяет ряд базовых свойств, чтобы установить характеристики пользовательского дисплея.
Для запуска примера кода необходимо скомпилировать этот исходный код. Вы можете скомпилировать его явным образом и поместить полученную сборку в папку bin веб-сайта или глобальный кэш сборок. Кроме того, исходный код можно поместить в папку App_Code сайта, где он будет динамически скомпилирован во время выполнения. Пошаговое руководство по компиляции см. в руководстве по разработке и использованию пользовательского веб-сервера.
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Security.Permissions;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
namespace Samples.AspNet.CS.Controls
{
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public class NewWebPartManager : WebPartManager
{
private static readonly WebPartDisplayMode _inLineEditDisplayMode =
new InlineWebPartEditDisplayMode();
public NewWebPartManager() {}
protected override WebPartDisplayModeCollection CreateDisplayModes()
{
WebPartDisplayModeCollection displayModes =
base.CreateDisplayModes();
displayModes.Add(_inLineEditDisplayMode);
return displayModes;
}
public WebPartDisplayMode InLineEditDisplayMode
{
get { return _inLineEditDisplayMode; }
}
private sealed class InlineWebPartEditDisplayMode : WebPartDisplayMode
{
public InlineWebPartEditDisplayMode()
: base("Inline Edit Display")
{
}
public override bool AllowPageDesign
{
get { return true; }
}
public override bool RequiresPersonalization
{
get { return true; }
}
public override bool ShowHiddenWebParts
{
get { return false; }
}
public override bool AssociatedWithToolZone
{
get { return false; }
}
public override bool IsEnabled(WebPartManager webPartManager)
{
return true;
}
}
}
}
Imports System.Collections.Generic
Imports System.Configuration
Imports System.Web
Imports System.Web.Security
Imports System.Security.Permissions
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.WebControls.WebParts
Namespace Samples.AspNet.VB.Controls
<AspNetHostingPermission(SecurityAction.Demand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
<AspNetHostingPermission(SecurityAction.InheritanceDemand, _
Level:=AspNetHostingPermissionLevel.Minimal)> _
Public Class NewWebPartManager
Inherits WebPartManager
Private Shared _inLineEditDisplayMode As WebPartDisplayMode = _
New InlineWebPartEditDisplayMode()
Public Sub New()
End Sub
Protected Overrides Function CreateDisplayModes() As WebPartDisplayModeCollection
Dim displayModes As WebPartDisplayModeCollection = MyBase.CreateDisplayModes()
displayModes.Add(_inLineEditDisplayMode)
Return displayModes
End Function
Public ReadOnly Property InLineEditDisplayMode() As WebPartDisplayMode
Get
Return _inLineEditDisplayMode
End Get
End Property
Private NotInheritable Class InlineWebPartEditDisplayMode
Inherits WebPartDisplayMode
Public Sub New()
MyBase.New("Inline Edit Display")
End Sub
Public Overrides ReadOnly Property AllowPageDesign() As Boolean
Get
Return True
End Get
End Property
Public Overrides ReadOnly Property RequiresPersonalization() _
As Boolean
Get
Return True
End Get
End Property
Public Overrides ReadOnly Property ShowHiddenWebParts() As Boolean
Get
Return False
End Get
End Property
Public Overrides ReadOnly Property AssociatedWithToolZone() _
As Boolean
Get
Return False
End Get
End Property
Public Overrides Function IsEnabled(ByVal webPartManager _
As WebPartManager) As Boolean
Return True
End Function
End Class
End Class
End Namespace
Чтобы запустить пример кода, загрузите страницу в браузере. Обратите внимание, что страница в настоящее время находится в режиме обзора, и кнопка не отображается. С помощью раскрывающегося списка режима отображения измените страницу на режим встроенного редактирования и обратите внимание, что кнопка отображается в нижнем пользовательском элементе управления. Добавьте текст и нажмите кнопку, чтобы обновить элемент управления. Обратите внимание, что отображение страницы возвращается в режим обзора, введенный текст теперь отображается, и кнопка снова скрыта, так как страница не находится в пользовательском режиме отображения.
Комментарии
Класс WebPartDisplayModeCollection предназначен для хранения коллекции WebPartDisplayMode объектов. Он используется в основном WebPartManager элементом управления для управления коллекциями WebPartDisplayMode объектов.
Режим отображения — это специальное представление веб-страницы, которая отображается при назначении в качестве текущего режима отображения в свойстве WebPartManager.DisplayMode . Режимы отображения используются в наборе элементов управления веб-частей для создания представлений страниц, в которых пользователи могут выполнять специальные задачи, такие как элементы управления редактированием или изменение макета страницы. Элемент WebPartManager управления определяет несколько режимов отображения, включая BrowseDisplayMode, , EditDisplayModeDesignDisplayModeи CatalogDisplayMode.ConnectDisplayMode Коллекция режимов отображения ссылается на WebPartManager.DisplayModes свойство.
На любой веб-странице с элементами управления веб-частей доступны только определенные режимы отображения. Режим обзора по умолчанию и режим конструктора почти всегда доступен, но другие режимы отображения доступны только в том случае, если на странице присутствуют соответствующие типы зон. Дополнительные сведения см. в обзоре WebPartDisplayMode класса.
Элемент WebPartManager управления отслеживает доступные режимы отображения на странице со своим SupportedDisplayModes свойством. Это свойство ссылается на WebPartDisplayModeCollection объект, содержащий все поддерживаемые режимы отображения.
У WebPartDisplayModeCollection класса нет открытого конструктора, поэтому вы не можете создать собственный экземпляр. Если вы создаете пользовательский WebPartDisplayMode объект и хотите, чтобы он был частью коллекции поддерживаемых режимов отображения в WebPartManager элементе управления, необходимо наследовать от WebPartManager класса, переопределить CreateDisplayModes метод, вызвать базовый метод для создания коллекции, а затем добавить в коллекцию настраиваемые режимы отображения с помощью его Add метода.
Класс WebPartDisplayModeCollection имеет два открытых свойства. Свойство IsReadOnly — это свойство только для чтения, указывающее, доступна ли коллекция только для чтения. Перегруженное Item[] свойство предоставляет доступ к членам коллекции.
Класс WebPartDisplayModeCollection также имеет несколько методов. Метод, уже упомянутый Add , позволяет добавлять WebPartDisplayMode объекты в коллекцию. Метод Contains определяет, существует ли определенный режим отображения в коллекции. Метод CopyTo копирует коллекцию в массив объектов. Метод IndexOf возвращает индекс определенного режима отображения в коллекции. Наконец, Insert метод позволяет вставлять объект режима отображения по определенному индексу в коллекцию.
Свойства
| Имя | Описание |
|---|---|
| Capacity |
Возвращает или задает количество элементов, которые CollectionBase могут содержаться. (Унаследовано от CollectionBase) |
| Count |
Возвращает количество элементов, содержащихся в экземпляре CollectionBase . Это свойство нельзя переопределить. (Унаследовано от CollectionBase) |
| InnerList |
ArrayList Возвращает список элементов в экземпляреCollectionBase. (Унаследовано от CollectionBase) |
| IsReadOnly |
Возвращает значение, указывающее, доступна ли коллекция только для чтения. |
| Item[Int32] |
Возвращает определенный элемент коллекции в соответствии с его индексом. |
| Item[String] |
Возвращает определенный элемент коллекции в соответствии с уникальным идентификатором. |
| List |
IList Возвращает список элементов в экземпляреCollectionBase. (Унаследовано от CollectionBase) |
Методы
| Имя | Описание |
|---|---|
| Add(WebPartDisplayMode) |
WebPartDisplayMode Добавляет объект в коллекцию. |
| Clear() |
Удаляет все объекты из экземпляра CollectionBase . Этот метод нельзя переопределить. (Унаследовано от CollectionBase) |
| Contains(WebPartDisplayMode) |
Возвращает значение, указывающее, существует ли конкретный WebPartDisplayMode объект в коллекции. |
| CopyTo(WebPartDisplayMode[], Int32) |
Копирует коллекцию в массив WebPartDisplayMode объектов. |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetEnumerator() |
Возвращает перечислитель, который выполняет итерацию по экземпляру CollectionBase . (Унаследовано от CollectionBase) |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| IndexOf(WebPartDisplayMode) |
Возвращает положение определенного члена коллекции. |
| Insert(Int32, WebPartDisplayMode) |
Вставляет WebPartDisplayMode объект в коллекцию по указанной позиции индекса. |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| OnClear() |
Выполняет дополнительные пользовательские процессы при очистке содержимого экземпляра CollectionBase . (Унаследовано от CollectionBase) |
| OnClearComplete() |
Выполняет дополнительные пользовательские процессы после очистки содержимого экземпляра CollectionBase . (Унаследовано от CollectionBase) |
| OnInsert(Int32, Object) |
Выполняет дополнительные пользовательские процессы перед вставкой нового элемента в CollectionBase экземпляр. (Унаследовано от CollectionBase) |
| OnInsertComplete(Int32, Object) |
Выполняет дополнительные пользовательские процессы после вставки нового элемента в CollectionBase экземпляр. (Унаследовано от CollectionBase) |
| OnRemove(Int32, Object) |
Выполняет дополнительные пользовательские процессы при удалении элемента из экземпляра CollectionBase . (Унаследовано от CollectionBase) |
| OnRemoveComplete(Int32, Object) |
Выполняет дополнительные пользовательские процессы после удаления элемента из экземпляра CollectionBase . (Унаследовано от CollectionBase) |
| OnSet(Int32, Object, Object) |
Выполняет дополнительные пользовательские процессы перед заданием значения в экземпляре CollectionBase . (Унаследовано от CollectionBase) |
| OnSetComplete(Int32, Object, Object) |
Выполняет дополнительные пользовательские процессы после задания значения в экземпляре CollectionBase . (Унаследовано от CollectionBase) |
| OnValidate(Object) |
Выполняет дополнительные пользовательские процессы при проверке значения. (Унаследовано от CollectionBase) |
| RemoveAt(Int32) |
Удаляет элемент по указанному индексу экземпляра CollectionBase . Этот метод не переопределяется. (Унаследовано от CollectionBase) |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Явные реализации интерфейса
| Имя | Описание |
|---|---|
| ICollection.CopyTo(Array, Int32) |
Копирует весь CollectionBase в совместимую одномерную Array, начиная с указанного индекса целевого массива. (Унаследовано от CollectionBase) |
| ICollection.IsSynchronized |
Возвращает значение, указывающее, синхронизирован ли доступ к CollectionBase (потокобезопасный). (Унаследовано от CollectionBase) |
| ICollection.SyncRoot |
Получает объект, который можно использовать для синхронизации доступа к объекту CollectionBase. (Унаследовано от CollectionBase) |
| IList.Add(Object) |
Добавляет объект в конец CollectionBase. (Унаследовано от CollectionBase) |
| IList.Contains(Object) |
Определяет, содержит ли CollectionBase определенный элемент. (Унаследовано от CollectionBase) |
| IList.IndexOf(Object) |
Выполняет поиск указанного Object и возвращает отсчитываемый от нуля индекс первого вхождения в течение всего CollectionBase. (Унаследовано от CollectionBase) |
| IList.Insert(Int32, Object) |
Вставляет элемент в CollectionBase по указанному индексу. (Унаследовано от CollectionBase) |
| IList.IsFixedSize |
Возвращает значение, указывающее, имеет ли CollectionBase фиксированный размер. (Унаследовано от CollectionBase) |
| IList.IsReadOnly |
Возвращает значение, указывающее, доступен ли CollectionBase только для чтения. (Унаследовано от CollectionBase) |
| IList.Item[Int32] |
Возвращает или задает элемент по указанному индексу. (Унаследовано от CollectionBase) |
| IList.Remove(Object) |
Удаляет первое вхождение определенного объекта из CollectionBase. (Унаследовано от CollectionBase) |
Методы расширения
| Имя | Описание |
|---|---|
| AsParallel(IEnumerable) |
Включает параллелизацию запроса. |
| AsQueryable(IEnumerable) |
Преобразует IEnumerable в IQueryable. |
| Cast<TResult>(IEnumerable) |
Приведение элементов IEnumerable к указанному типу. |
| OfType<TResult>(IEnumerable) |
Фильтрует элементы IEnumerable на основе указанного типа. |