DeclarativeCatalogPart.WebPartsListUserControlPath Özellik

Tanım

Katalog için veya diğer sunucu denetimlerinin listesini içeren bir kullanıcı denetiminin WebPart yolunu alır veya ayarlar.

C#
[System.Web.UI.Themeable(false)]
public string WebPartsListUserControlPath { get; set; }

Özellik Değeri

Veya sunucu denetimleri kümesini içeren bir kullanıcı denetiminin WebPart yolunu içeren dize.

Öznitelikler

Örnekler

Aşağıdaki kod örneği, özelliğinin WebPartsListUserControlPath bildirim temelli ve programlı olarak nasıl kullanılacağını gösterir. Bu örnekte beş bölüm vardır:

  • Web Bölümleri sayfasındaki görüntü modlarını değiştirmenize olanak tanıyan bir kullanıcı denetimi.

  • İki özel WebPart denetim içeren bir kaynak kod dosyası.

  • Özel WebPart denetimlere başvurular içeren ve Web sayfasındaki özelliği tarafından WebPartsListUserControlPath başvuruda bulunan başka bir kullanıcı denetimi.

  • Denetim ve özel denetimleri içeren CatalogZone kullanıcı denetimine başvuran bir DeclarativeCatalogPart denetim içeren Web sayfası.

  • Sayfayı bir tarayıcıda yüklediğinizde örneğin nasıl çalıştığını gösteren açıklama.

Bu kod örneğinin ilk bölümü, kullanıcıların Web sayfasındaki görüntü modlarını değiştirmesine olanak tanıyan kullanıcı denetimidir. Bu denetimdeki görüntü modları ve kaynak kodun açıklaması hakkında ayrıntılı bilgi için bkz . İzlenecek Yol: Web Bölümleri Sayfasında Görüntüleme Modlarını Değiştirme.

ASP.NET (C#)
<%@ 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=" 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" 
      ToolTip="Reset the current user's personalization data for the page."
      Font-Size="8" 
      OnClick="LinkButton1_Click" />
    <asp:Panel ID="Panel2" runat="server" 
      GroupingText="Personalization Scope"
      Font-Bold="true"
      Font-Size="8" 
      Visible="false" >
      <asp:RadioButton ID="RadioButton1" runat="server" 
        Text="User" 
        AutoPostBack="true"
        GroupName="Scope" OnCheckedChanged="RadioButton1_CheckedChanged" />
      <asp:RadioButton ID="RadioButton2" runat="server" 
        Text="Shared" 
        AutoPostBack="true"
        GroupName="Scope" 
        OnCheckedChanged="RadioButton2_CheckedChanged" />
    </asp:Panel>
  </asp:Panel>
</div>

Kod örneğinin ikinci bölümü, iki özel WebPart denetimin kaynak kodudur. Kod örneğinin çalışması için bu kaynak kodunu derlemeniz gerekir. Bunu açıkça derleyebilir ve sonuçta elde edilen derlemeyi Web sitenizin Bin klasörüne veya genel derleme önbelleğine yerleştirebilirsiniz. Alternatif olarak, kaynak kodu sitenizin App_Code klasörüne koyabilirsiniz; burada çalışma zamanında dinamik olarak derlenir. Her iki derleme yöntemini de gösteren bir izlenecek yol için bkz. İzlenecek Yol: Özel Web Sunucusu Denetimi Geliştirme ve Kullanma.

C#
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 UserInfoWebPart : WebPart
  {
    HttpServerUtility server = HttpContext.Current.Server;
    private String _userNickName = "Add a nickname.";
    private String _userPetName = "Add a pet's name.";
    private DateTime _userSpecialDate = DateTime.Now;
    private Boolean _userIsCurrent = true;
    private JobTypeName _userJobType = JobTypeName.Unselected;
    public enum JobTypeName
    {
      Unselected = 0,
      Support = 1,
      Service = 2,
      Professional = 3, 
      Technical = 4,
      Manager = 5,
      Executive = 6
    }
    Label NickNameLabel;
    Label PetNameLabel;
    Label SpecialDateLabel;
    CheckBox IsCurrentCheckBox;
    Label JobTypeLabel;

    // Add the Personalizable and WebBrowsable attributes to the  
    // public properties, so that users can save property values  
    // and edit them with a PropertyGridEditorPart control.
    [Personalizable(), WebBrowsable, WebDisplayName("Nickname")]
    public String NickName
    {
      get 
      { 
        object o = ViewState["NickName"];
        if (o != null)
          return (string)o;
        else
          return _userNickName;        
      } 

      set { _userNickName = server.HtmlEncode(value); }
    }

    [Personalizable(), WebBrowsable, WebDisplayName("Pet Name")]
    public String PetName
    {
      get 
      { 
        object o = ViewState["PetName"];
        if (o != null)
          return (string)o;
        else
          return _userPetName;        
      }

      set { _userPetName = server.HtmlEncode(value); }
    }

    [Personalizable(), WebBrowsable(), WebDisplayName("Special Day")]
    public DateTime SpecialDay
    {
      get
      {
        object o = ViewState["SpecialDay"];
        if (o != null)
          return (DateTime)o;
        else
          return _userSpecialDate;
      }

      set { _userSpecialDate = value; }
    }

    [Personalizable(), WebBrowsable(), WebDisplayName("Job Type")]
    public JobTypeName UserJobType
    {
      get
      {
        object o = ViewState["UserJobType"];
        if (o != null)
          return (JobTypeName)o;
        else
          return _userJobType;
      }

      set { _userJobType = (JobTypeName)value; }
    }

    [Personalizable(), WebBrowsable(), WebDisplayName("Is Current")]
    public Boolean IsCurrent
    {
      get
      {
        object o = ViewState["IsCurrent"];
        if (o != null)
          return (Boolean)o;
        else
          return _userIsCurrent;
      }

      set { _userIsCurrent = value; }
    }

    protected override void CreateChildControls()
    {
      Controls.Clear();

      NickNameLabel = new Label();
      NickNameLabel.Text = this.NickName;
      SetControlAttributes(NickNameLabel);

      PetNameLabel = new Label();
      PetNameLabel.Text = this.PetName;
      SetControlAttributes(PetNameLabel);

      SpecialDateLabel = new Label();
      SpecialDateLabel.Text = this.SpecialDay.ToShortDateString();
      SetControlAttributes(SpecialDateLabel);

      IsCurrentCheckBox = new CheckBox();
      IsCurrentCheckBox.Checked = this.IsCurrent;
      SetControlAttributes(IsCurrentCheckBox);

      JobTypeLabel = new Label();
      JobTypeLabel.Text = this.UserJobType.ToString();
      SetControlAttributes(JobTypeLabel);

      ChildControlsCreated = true;
    }

    private void SetControlAttributes(WebControl ctl)
    {
      ctl.BackColor = Color.White;
      ctl.BorderWidth = 1;
      ctl.Width = 200;
      this.Controls.Add(ctl);
    }

    protected override void RenderContents(HtmlTextWriter writer)
    {
      writer.Write("Nickname:");
      writer.WriteBreak();
      NickNameLabel.RenderControl(writer);
      writer.WriteBreak();
      writer.Write("Pet Name:");
      writer.WriteBreak();
      PetNameLabel.RenderControl(writer);
      writer.WriteBreak();
      writer.Write("Special Date:");
      writer.WriteBreak();
      SpecialDateLabel.RenderControl(writer);
      writer.WriteBreak();
      writer.Write("Job Type:");
      writer.WriteBreak();
      JobTypeLabel.RenderControl(writer);
      writer.WriteBreak();
      writer.Write("Current:");
      writer.WriteBreak();
      IsCurrentCheckBox.RenderControl(writer);
    }
  }

  [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;
      }
    }
  }
}

Kod örneğinin üçüncü bölümü, özel WebPart denetimleri içeren kullanıcı denetimidir ve özelliği tarafından başvurulur WebPartsListUserControlPath .

ASP.NET (C#)
<%@ Control Language="C#" ClassName="WebUserControl" %>
<%@ register tagprefix="aspSample" 
  Namespace="Samples.AspNet.CS.Controls" 
  Assembly="UserInfoWebPartCS" %>

<aspSample:UserInfoWebPart 
  runat="server"   
  id="userinfo1" 
  title = "User Information WebPart"
  Description ="Contains custom, editable user information for display on a page." />
<aspSample:TextDisplayWebPart 
  runat="server"   
  id="TextDisplayWebPart1" 
  title = "Text Display WebPart" 
  Description="Contains a label where users can dynamically update the text." />

Örneğin dördüncü bölümü, denetimi içeren DeclarativeCatalogPart Web sayfasıdır. Özelliğin WebPartsListUserControlPath sayfanın işaretlemesinde bildirim temelli olarak ayarlandıklarına dikkat edin; özellik değeri, kullanıcı sayfa katalog görüntüleme modundayken gösterilen bir düğmeye tıkladığında program aracılığıyla da ayarlanabilir.

ASP.NET (C#)
<%@ page language="c#" %>
<%@ register TagPrefix="uc1" 
  TagName="DisplayModeMenuCS" 
  Src="DisplayModeMenuCS.ascx" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  
protected void Page_Load(object sender, EventArgs e)
{
  Button1.Visible = false;
  TextBox1.Visible = false;
}

// <snippet3>
protected void Button1_Click(object sender, EventArgs e)
{
  DeclarativeCatalogPart1.WebPartsListUserControlPath =
    Server.HtmlEncode(TextBox1.Text);
}
// </snippet3>

// <snippet4>
protected void DeclarativeCatalogPart1_PreRender(object sender,
  EventArgs e)
{
  Button1.Visible = true;
  TextBox1.Visible = true;
}
// </snippet4> 

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>
      DeclarativeCatalogPart Control
    </title>
  </head>
  <body>
    <form id="form1" runat="server">
      <asp:webpartmanager id="WebPartManager1" runat="server"  />
      <uc1:DisplayModeMenuCS ID="DisplayModeMenu1" runat="server" />
      <asp:webpartzone id="zone1" runat="server" >
        <PartTitleStyle BorderWidth="1" 
          Font-Names="Verdana, Arial"
          Font-Size="110%"
          BackColor="LightBlue" />
        <zonetemplate>
          <asp:BulletedList ID="BulletedList1" 
            Runat="server"
            DisplayMode="HyperLink"
            Title="Favorites">
            <asp:ListItem Value="http://msdn.microsoft.com">
              MSDN
            </asp:ListItem>
            <asp:ListItem Value="http://www.asp.net">
              ASP.NET
            </asp:ListItem>
            <asp:ListItem Value="http://www.msn.com">
              MSN
            </asp:ListItem>
          </asp:BulletedList>
        </zonetemplate>
      </asp:webpartzone> 
      <div>
      <hr />
      <asp:Button ID="Button1" runat="server" 
        Text="Update WebPartsListUserControlPath property" 
        OnClick="Button1_Click" />
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
      </div>
      <asp:CatalogZone ID="CatalogZone1" runat="server">
        <ZoneTemplate>
          <asp:DeclarativeCatalogPart ID="DeclarativeCatalogPart1"  
            runat="server" 
            Title="Web Parts Catalog"
            ChromeType="TitleOnly" 
            Description="Contains a user control with Web Parts and 
              an ASP.NET Calendar control." 
            OnPreRender="DeclarativeCatalogPart1_PreRender"
            WebPartsListUserControlPath="webusercontrolcs.ascx">
            <WebPartsTemplate>
              <asp:Calendar ID="Calendar1" runat="server" 
                Title="My Calendar" 
                Description="ASP.NET Calendar control used as a personal calendar." />
            </WebPartsTemplate>              
          </asp:DeclarativeCatalogPart>
        </ZoneTemplate>
      </asp:CatalogZone>
    </form>
  </body>
</html>

Sayfayı bir tarayıcıda yüklediğinizde, katalog moduna geçmek için Görüntü Modu açılan liste denetiminde Katalog Modu'nu seçin. Katalog modunda, sayfaya eklenebilen denetimleri görebilirsiniz. Metin kutusuna değer girmeden WebPartsListUserControlPath özelliğini güncelleştir düğmesine tıklayın. Özelliğine boş bir dize ("") atandığında kataloğun güncelleştirildiğini ve yalnızca sayfada açıkça bildirilen denetimin katalogda kaldığına dikkat edin. Metin kutusuna denetimleri içeren WebPart kullanıcı denetiminin adını yazar ve WebPartsListUserControlPath'i Güncelleştir özellik düğmesine yeniden tıklarsanız, WebPartsListUserControlPath özellik artık kullanıcı denetimini yeniden gösterir ve ek WebPart denetimler katalogda yeniden görünür.

Açıklamalar

WebPartsListUserControlPath özelliği, geliştiricilerin bir bölgeye eklenebilen bir dizi veya başka sunucu denetimi içeren bir kullanıcı denetiminin WebPart yolunu belirtmesini WebPartZoneBase sağlar. Bu özelliğe kullanıcı denetiminin geçerli bir yolu atanırsa, denetimler derleme zamanında kataloğa otomatik olarak eklenir.

WebPartsListUserControlPath özelliği birçok farklı sayfa veya sitedeki kullanılabilir denetim kümesini paketlemek ve yeniden kullanmak için bir yol sağladığından yararlı olabilir. Geliştiriciler, katalog sağlamak isteyen her sayfa için bir katalogdaki her denetimi el ile bildirmek yerine bu özelliği kullanarak bir denetim kümesinin WebPart tamamına başvuran bir kullanıcı denetimine işaret edebilir. Ayrıca özelliği, WebPartsListUserControlPath Web sayfasındaki bir <asp:declarativecatalogpart> öğe içinde açıkça bildirilen denetimlerle WebPart birlikte kullanılabilir.

Bu özellik temalar veya stil sayfası temaları tarafından ayarlanamaz. Daha fazla bilgi için bkz ThemeableAttribute . temalar ve dış görünümler ASP.NET.

Şunlara uygulanır

Ürün Sürümler
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

Ayrıca bkz.