WebPartManager.DeleteWarning 属性

定义

获取或设置一个自定义警告消息,当最终用户删除一个控件时,将显示该消息。

public:
 virtual property System::String ^ DeleteWarning { System::String ^ get(); void set(System::String ^ value); };
public virtual string DeleteWarning { get; set; }
member this.DeleteWarning : string with get, set
Public Overridable Property DeleteWarning As String

属性值

包含警告消息文本的字符串。 默认值是经本地化的警告消息。

示例

下面的代码示例演示如何以声明方式和编程方式使用 DeleteWarning 属性。

代码示例分为四个部分:

  • 用于更改页面显示模式的用户控件。

  • 自定义 WebPart 控件。

  • 网页。

  • 说明示例在浏览器中的工作原理。

代码示例的第一部分是用于更改显示模式的用户控件。 可以从类概述的“示例”部分获取用户控件的 WebPartManager 源代码。 有关显示模式和用户控件工作原理的详细信息,请参阅 演练:更改 Web 部件页上的显示模式

代码示例的第二部分是自定义 WebPart 控件。 若要运行代码示例,必须编译此源代码。 可以显式编译它,并将生成的程序集放入网站的 Bin 文件夹或全局程序集缓存中。 或者,可以将源代码放在站点的“App_Code”文件夹中,并在运行时对其进行动态编译。 此示例使用动态编译方法;因此,网页顶部此控件的 指令中Register没有 Assembly 属性。 有关演示如何编译的演练,请参阅 演练:开发和使用自定义 Web 服务器控件

using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Security.Permissions;
using System.Web;
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 TextDisplayWebPart : WebPart
  {
    private String _contentText = null;
    TextBox input;
    Label DisplayContent;
    Literal lineBreak;

    [Personalizable(), WebBrowsable]
    public String ContentText
    {
      get { return _contentText; }
      set { _contentText = value; }
    }

    protected override void CreateChildControls()
    {
      Controls.Clear();
      DisplayContent = new Label();
      DisplayContent.BackColor = Color.LightBlue;
      DisplayContent.Text = this.ContentText;
      this.Controls.Add(DisplayContent);

      lineBreak = new Literal();
      lineBreak.Text = @"<br />";
      Controls.Add(lineBreak);

      input = new TextBox();
      this.Controls.Add(input);
      Button update = new Button();
      update.Text = "Set Label Content";
      update.Click += new EventHandler(this.submit_Click);
      this.Controls.Add(update);
    }

    private void submit_Click(object sender, EventArgs e)
    {
      // Update the label string.
      if (!string.IsNullOrEmpty(input.Text))
      {
        _contentText = input.Text + @"<br />";
        input.Text = String.Empty;
        DisplayContent.Text = this.ContentText;
      }
    }
  }
}
Imports System.Collections
Imports System.ComponentModel
Imports System.Drawing
Imports System.Security.Permissions
Imports System.Web
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 TextDisplayWebPart
    Inherits WebPart
    Private _contentText As String = Nothing
    Private _fontStyle As String = Nothing
    Private input As TextBox
    Private DisplayContent As Label
    Private lineBreak As Literal

    <Personalizable(), WebBrowsable()> _
    Public Property ContentText() As String
      Get
        Return _contentText
      End Get
      Set(ByVal value As String)
        _contentText = value
      End Set
    End Property

    Protected Overrides Sub CreateChildControls()
      Controls.Clear()
      DisplayContent = New Label()
      DisplayContent.BackColor = Color.LightBlue
      DisplayContent.Text = Me.ContentText
      Me.Controls.Add(DisplayContent)

      lineBreak = New Literal()
      lineBreak.Text = "<br />"
      Controls.Add(lineBreak)

      input = New TextBox()
      Me.Controls.Add(input)
      Dim update As New Button()
      update.Text = "Set Label Content"
      AddHandler update.Click, AddressOf Me.submit_Click
      Me.Controls.Add(update)

    End Sub

    Private Sub submit_Click(ByVal sender As Object, _
                             ByVal e As EventArgs)
      ' Update the label string.
      If input.Text <> String.Empty Then
        _contentText = input.Text + "<br />"
        input.Text = String.Empty
        DisplayContent.Text = Me.ContentText
      End If

    End Sub

  End Class

End Namespace

代码示例的第三部分是网页。 该页包含一个 CatalogZone 区域,该区域中声明了自定义 WebPart 控件,以便用户可以在运行时将其添加到页面。 请注意,只有动态控件 (以编程方式添加到页面或从类似) 目录中的控件可以从页面中删除。 静态控件 (在页面) 标记的 WebPartZoneBase 区域中声明的控件可以关闭,但绝不会删除。 元素<asp:webpartmanager>使用 DeleteWarning 特性声明属性的DeleteWarning自定义值。 方法 Button1_Click 将另一个自定义值分配给 DeleteWarning 属性。

<%@ Page Language="C#" %>
<%@ Register TagPrefix="uc1" 
    TagName="DisplayModeMenuCS"
    Src="~/DisplayModeMenuCS.ascx" %>
<%@ Register TagPrefix="aspSample" 
    Namespace="Samples.AspNet.CS.Controls"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  
  const String NewWarning = @"If you delete this WebPart " + 
    "control instance, it will be permanently removed and " +
    "cannot be retrieved.  Do you still want to delete it?";
    
  protected void Button1_Click(object sender, EventArgs e)
  {
    mgr1.DeleteWarning = NewWarning;
  }

  // Hide the button to change the property when there is
  // no control available to delete.
  protected void Page_Load(object sender, EventArgs e)
  {
    if (WebPartZone1.WebParts.Count == 0)
      Button1.Visible = false;
    else
      Button1.Visible = true;
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
      <asp:WebPartManager ID="mgr1" runat="server" 
        DeleteWarning="Do you want to delete this control?" />
      <uc1:DisplayModeMenuCS ID="menu1" runat="server" />
      <h2>Delete Warning Example Page</h2>
      <asp:WebPartZone ID="WebPartZone1" runat="server" />
      <asp:CatalogZone ID="CatalogZone1" runat="server">
        <ZoneTemplate>
          <asp:DeclarativeCatalogPart 
            ID="DeclarativeCatalogPart1" 
            runat="server">
            <WebPartsTemplate>
              <aspSample:TextDisplayWebPart ID="text1" 
                runat="server" 
                Title="My Text WebPart" />
             </WebPartsTemplate>
          </asp:DeclarativeCatalogPart>  
        </ZoneTemplate>
      </asp:CatalogZone>
      <asp:Button ID="Button1" runat="server" 
        Text="Change Delete Warning" 
        OnClick="Button1_Click" />
    </form>
</body>
</html>
<%@ Page Language="vb" %>
<%@ Register TagPrefix="uc1" 
    TagName="DisplayModeMenuVB"
    Src="~/DisplayModeMenuVB.ascx" %>
<%@ Register TagPrefix="aspSample" 
    Namespace="Samples.AspNet.VB.Controls"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  
  Private Const NewWarning As String = "If you delete this WebPart " & _
    "control instance, it will be permanently removed and " & _
    "cannot be retrieved.  Do you still want to delete it?"

  Protected Sub Button1_Click(ByVal sender As Object, _
    ByVal e As System.EventArgs)
    
    mgr1.DeleteWarning = NewWarning

  End Sub
  
  Protected Sub Page_Load(ByVal sender As Object, _
    ByVal e As EventArgs)

    If WebPartZone1.WebParts.Count = 0 Then
      Button1.Visible = False
    Else
      Button1.Visible = True
    End If
    
  End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
      <asp:WebPartManager ID="mgr1" runat="server" 
        DeleteWarning="Do you want to delete this control?" />
      <uc1:DisplayModeMenuVB ID="menu1" runat="server" />
      <h2>Delete Warning Example Page</h2>
      <asp:WebPartZone ID="WebPartZone1" runat="server" />
      <asp:CatalogZone ID="CatalogZone1" runat="server">
        <ZoneTemplate>
          <asp:DeclarativeCatalogPart 
            ID="DeclarativeCatalogPart1" 
            runat="server">
            <WebPartsTemplate>
              <aspSample:TextDisplayWebPart ID="text1" 
                runat="server" 
                Title="My Text WebPart" />
             </WebPartsTemplate>
          </asp:DeclarativeCatalogPart>  
        </ZoneTemplate>
      </asp:CatalogZone>
      <asp:Button ID="Button1" runat="server" 
        Text="Change Delete Warning" 
         OnClick="Button1_Click" />
    </form>
</body>
</html>

在浏览器中加载页面后,需要将 WebPart 控件添加到页面。 使用 “显示模式 ”下拉列表控件,选择目录模式。 当目录出现时,选中自定义控件旁边的复选框,单击“ 添加 ”将其添加到页面,然后单击“ 关闭 ”将页面返回到浏览模式。 现在控件可见,可以将其删除。 再次使用 “显示模式” 控件,将页面切换到设计模式, (在页面处于浏览模式) 时无法删除控件。 单击控件标题 WebPart) 箭头符号 (谓词菜单,然后选择“ 删除”。 此时将显示对 属性设置的 DeleteWarning 警告。 单击“取消” 。 现在,单击标记为 “更改删除警告”的按钮,这将以编程方式更改属性值。 从控件上的谓词菜单中,再次选择“ 删除 ”,并注意这一次会出现另一条警告消息。

注解

当用户删除控件时 WebPart ,通常会显示默认警告消息。 它会警告用户,删除此控件实例时,删除操作是永久性的。 页面开发人员可能会为用户提供一种将控件的新实例添加到页面的方法, (例如通过控件目录 WebPart 或通过某种编程方式) ,但已删除的控件的当前实例将被永久删除。 显示警告的对话框包括一个按钮,供用户根据需要取消删除。

属性 DeleteWarning 使开发人员能够设置向用户显示的警告消息。

如果页面开发人员将空字符串 (“”) 值分配给此属性,则当用户删除 WebPart 控件时不会显示警告消息对话框。

注意

对于 DeleteWarning 静态 WebPart 控件和服务器控件,不会显示 属性。 静态控件是在网页标记的区域中 WebPartZoneBase 声明的服务器控件。 由于此类控件是静态的,因此无法删除它们,因此在这种情况下永远不会显示删除警告消息。 用户可以关闭静态控件,但已关闭的控件会添加到页面目录中,用户可以从该目录中将其添加回页面,而已删除的控件则永远无法恢复。

适用于

另请参阅