IWebPart Arabirim
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
ASP.NET WebPart denetimleri tarafından kullanılan ortak kullanıcı arabirimi (UI) özelliklerini tanımlar.
public interface class IWebPart
public interface IWebPart
type IWebPart = interface
Public Interface IWebPart
- Türetilmiş
Örnekler
Aşağıdaki kod örneği, arabirimin kullanıcı denetiminde IWebPart nasıl uygulanduğunu gösterir. Bu, özelliklerin nasıl uygulandığını minimum düzeyde gösteren basit bir uygulamadır.
Kod örneğinin ilk bölümünde kullanıcı denetimi gösterilir. Kullanıcı denetimi, arabirimin tüm özelliklerini ve kullanıcı arabirimindeki IWebPart denetimlere bağlı ek iki genel özelliği uygular. her iki özel özellik, bu özelliklerdeki değerlerin tarayıcı oturumları arasında kaydedilmesini sağlayan özniteliğini kullanır Personalizable . Temel WebPart sınıf uygulamasında, arabirimin tüm özelliklerinin IWebPart de bu kod örneğinde olmasalar da kişiselleştirilebilir olarak uygulandığını unutmayın.
<%@ control language="C#" classname="AccountUserControlCS"%>
<%@ implements interface="System.Web.UI.WebControls.WebParts.IWebPart" %>
<script runat="server">
private string m_Description;
private string m_Title;
private string m_TitleIconImageUrl;
private string m_TitleUrl;
private string m_CatalogIconImageUrl;
[Personalizable]
public string UserName
{
get
{
if(String.IsNullOrEmpty(Textbox1.Text))
return String.Empty;
else
return Textbox1.Text;
}
set
{
Textbox1.Text = value;
}
}
[Personalizable]
public string Phone
{
get
{
if(String.IsNullOrEmpty(Textbox2.Text))
return String.Empty;
else
return Textbox2.Text;
}
set
{
Textbox2.Text = value;
}
}
// <snippet3>
public string Description
{
get
{
object objTitle = ViewState["Description"];
if (objTitle == null)
return String.Empty;
return (string)objTitle;
}
set
{
ViewState["Description"] = value;
}
}
// </snippet3>
// <snippet4>
public string Title
{
get
{
object objTitle = ViewState["Title"];
if (objTitle == null)
return String.Empty;
return (string)objTitle;
}
set
{
ViewState["Title"] = value;
}
}
// </snippet4>
// <snippet5>
public string Subtitle
{
get
{
object objSubTitle = ViewState["Subtitle"];
if (objSubTitle == null)
return "My Subtitle";
return (string)objSubTitle;
}
}
// </snippet5>
// <snippet6>
public string TitleIconImageUrl
{
get
{
object objTitle = ViewState["TitleIconImageUrl"];
if (objTitle == null)
return String.Empty;
return (string)objTitle;
}
set
{
ViewState["TitleIconImageUrl"] = value;
}
}
// </snippet6>
// <snippet7>
public string TitleUrl
{
get
{
object objTitle = ViewState["TitleUrl"];
if (objTitle == null)
return String.Empty;
return (string)objTitle;
}
set
{
ViewState["TitleUrl"] = value;
}
}
// </snippet7>
// <snippet8>
public string CatalogIconImageUrl
{
get
{
object objTitle = ViewState["CatalogIconImageUrl"];
if (objTitle == null)
return String.Empty;
return (string)objTitle;
}
set
{
ViewState["CatalogIconImageUrl"] = value;
}
}
// </snippet8>
// <snippet9>
// Update the selected IWebPart property value.
void Button1_Click(object sender, EventArgs e)
{
String propertyValue = Server.HtmlEncode(TextBox3.Text);
TextBox3.Text = String.Empty;
switch (RadioButtonList1.SelectedValue)
{
case "title":
this.Title = propertyValue;
break;
case "description":
this.Description = propertyValue;
break;
case "catalogiconimageurl":
this.CatalogIconImageUrl = propertyValue;
break;
case "titleiconimageurl":
this.TitleIconImageUrl = propertyValue;
break;
case "titleurl":
this.TitleUrl = propertyValue;
break;
default:
break;
}
}
// </snippet9>
</script>
<div>
<asp:label id="Label1" runat="server" AssociatedControlID="Textbox1">
Name</asp:label>
<asp:textbox id="Textbox1" runat="server" />
</div>
<div>
<asp:label id="Label2" runat="server" AssociatedControlID="Textbox2">
Phone</asp:label>
<asp:textbox id="Textbox2" runat="server"></asp:textbox>
</div>
<div>
<asp:button id="Button2" runat="server" text="Save Form Values" />
</div>
<hr />
<asp:Label ID="Label3" Runat="server" Text="Label"
AssociatedControlID="RadioButtonList1">
<h3>Update selected IWebPart property values.</h3>
</asp:Label>
<asp:RadioButtonList ID="RadioButtonList1" Runat="server">
<asp:ListItem Value="title">Title</asp:ListItem>
<asp:ListItem Value="description">Description</asp:ListItem>
<asp:ListItem Value="catalogiconimageurl">CatalogIconImageUrl</asp:ListItem>
<asp:ListItem Value="titleiconimageurl">TitleIconImageUrl</asp:ListItem>
<asp:ListItem Value="titleurl">TitleUrl</asp:ListItem>
</asp:RadioButtonList>
<br />
<asp:Label ID="Label4" runat="server" Text="Label"
AssociatedControlID="TextBox3">
Property Value:
</asp:Label>
<asp:TextBox ID="TextBox3" runat="server">
</asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server"
Text="Update Property"
OnClick="Button1_Click">
</asp:Button>
<%@ control language="VB" classname="AccountUserControlVB"%>
<%@ implements interface="System.Web.UI.WebControls.WebParts.IWebPart" %>
<script runat="server">
Private m_Description As String
Private m_Title As String
Private m_TitleIconImageUrl As String
Private m_TitleUrl As String
Private m_CatalogIconImageUrl As String
<Personalizable()> _
Public Property UserName() As String
Get
If String.IsNullOrEmpty(Textbox1.Text) Then
Return String.Empty
Else
Return Textbox1.Text
End If
End Get
Set(ByVal value As String)
Textbox1.Text = Value
End Set
End Property
<Personalizable()> _
Public Property Phone() As String
Get
If String.IsNullOrEmpty(Textbox2.Text) Then
Return String.Empty
Else
Return Textbox2.Text
End If
End Get
Set(ByVal value As String)
Textbox2.Text = Value
End Set
End Property
' <snippet3>
Public Property Description() As String _
Implements IWebPart.Description
Get
Dim objTitle As Object = ViewState("Description")
If objTitle Is Nothing Then
Return String.Empty
End If
Return CStr(objTitle)
End Get
Set(ByVal value As String)
ViewState("Description") = value
End Set
End Property
' </snippet3>
' <snippet4>
Public Property Title() As String _
Implements IWebPart.Title
Get
Dim objTitle As Object = ViewState("Title")
If objTitle Is Nothing Then
Return String.Empty
End If
Return CStr(objTitle)
End Get
Set(ByVal value As String)
ViewState("Title") = value
End Set
End Property
' </snippet4>
' <snippet5>
ReadOnly Property Subtitle() As String _
Implements IWebPart.Subtitle
Get
Dim objSubTitle As Object = ViewState("Subtitle")
If objSubTitle Is Nothing Then
Return "My Subtitle"
End If
Return CStr(objSubTitle)
End Get
End Property
' </snippet5>
' <snippet6>
Public Property TitleIconImageUrl() As String _
Implements IWebPart.TitleIconImageUrl
Get
Dim objTitle As Object = ViewState("TitleIconImageUrl")
If objTitle Is Nothing Then
Return String.Empty
End If
Return CStr(objTitle)
End Get
Set(ByVal value As String)
ViewState("TitleIconImageUrl") = value
End Set
End Property
' </snippet6>
' <snippet7>
Public Property TitleUrl() As String _
Implements IWebPart.TitleUrl
Get
Dim objTitle As Object = ViewState("TitleUrl")
If objTitle Is Nothing Then
Return String.Empty
End If
Return CStr(objTitle)
End Get
Set(ByVal value As String)
ViewState("TitleUrl") = value
End Set
End Property
' </snippet7>
' <snippet8>
Public Property CatalogIconImageUrl() As String _
Implements IWebPart.CatalogIconImageUrl
Get
Dim objTitle As Object = ViewState("CatalogIconImageUrl")
If objTitle Is Nothing Then
Return String.Empty
End If
Return CStr(objTitle)
End Get
Set(ByVal value As String)
ViewState("CatalogIconImageUrl") = value
End Set
End Property
' </snippet8>
' <snippet9>
' Update the selected IWebPart property value.
Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim propertyValue As String = Server.HtmlEncode(TextBox3.Text)
TextBox3.Text = String.Empty
Select Case RadioButtonList1.SelectedValue
Case "title"
Me.Title = propertyValue
Case "description"
Me.Description = propertyValue
Case "catalogiconimageurl"
Me.CatalogIconImageUrl = propertyValue
Case "titleiconimageurl"
Me.TitleIconImageUrl = propertyValue
Case "titleurl"
Me.TitleUrl = propertyValue
Case Else
End Select
End Sub 'Button1_Click
' </snippet9>
</script>
<div>
<asp:label id="Label1" runat="server" AssociatedControlID="Textbox1">
Name</asp:label>
<asp:textbox id="Textbox1" runat="server" />
</div>
<div>
<asp:label id="Label2" runat="server" AssociatedControlID="Textbox2">
Phone</asp:label>
<asp:textbox id="Textbox2" runat="server"></asp:textbox>
</div>
<div>
<asp:button id="Button2" runat="server" text="Save Form Values" />
</div>
<hr />
<asp:Label ID="Label3" Runat="server" AssociatedControlID="RadioButtonList1">
<h3>Update selected IWebPart property values.</h3>
</asp:Label>
<asp:RadioButtonList ID="RadioButtonList1" Runat="server">
<asp:ListItem Value="title">Title</asp:ListItem>
<asp:ListItem Value="description">Description</asp:ListItem>
<asp:ListItem Value="catalogiconimageurl">CatalogIconImageUrl</asp:ListItem>
<asp:ListItem Value="titleiconimageurl">TitleIconImageUrl</asp:ListItem>
<asp:ListItem Value="titleurl">TitleUrl</asp:ListItem>
</asp:RadioButtonList>
<br />
<asp:Label ID="Label4" runat="server" AssociatedControlID="TextBox3">
Property Value:
</asp:Label>
<asp:TextBox ID="TextBox3" runat="server">
</asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server"
Text="Update Property"
OnClick="Button1_Click">
</asp:Button>
Kod örneğinin ikinci bölümünde kullanıcı denetimini barındıran Web sayfası gösterilir. Sayfada, kullanıcı denetimine başvurulan bir WebPartZone denetim vardır. Kullanıcı denetimi için işaretlemede arabirimin özellik değerlerinin IWebPart birkaçının bildirim temelli olarak ayarlandığına dikkat edin; bu da tasarım zamanında ve çalışma zamanında denetime WebPart benzer şekilde davranmasına ve görünmesine olanak tanır. Sayfayı bir tarayıcıya yüklerseniz, çalışma zamanında uygulanan IWebPart özelliklerin değerlerini program aracılığıyla değiştirme özelliğini göstermek için sayfadaki kullanıcı arabirimini kullanabilirsiniz. Özellik değerlerinden bazılarını değiştirdiğinizde, değişiklikler sayfada belirgin olmaz, ancak sayfa kaynağında ( TitleIconImageUrl özellik) görünür veya uygulamanın durum verilerinde ( CatalogIconImageUrl özellik) depolanır.
Önemli
Bu örnekte, olası bir güvenlik tehdidi olan kullanıcı girişini kabul eden bir metin kutusu vardır. Varsayılan olarak, ASP.NET Web sayfaları kullanıcı girişinin betik veya HTML öğeleri içermediğini doğrular. Daha fazla bilgi için bkz. Betik Açıklarına Genel Bakış.
<%@ page language="c#" %>
<%@ register tagprefix="uc1"
tagname="AccountUserControlCS"
src="AccountUserControlcs.ascx"%>
<!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>
Personalizable User Control with IWebPart Properties
</title>
</head>
<body>
<form id="form1" runat="server">
<asp:webpartmanager id="WebPartManager1" runat="server" />
<asp:webpartzone
id="zone1"
runat="server"
headertext="Main"
CloseVerb-Enabled="false">
<zonetemplate>
<uc1:AccountUserControlCS
runat="server"
id="accountwebpart"
title="Account Form"
Description="Account Form with default values."
CatalogIconImageUrl="MyCatalogIcon.gif"
TitleIconImageUrl="MyTitleIcon.gif"
TitleUrl="MyUrl.html"/>
</zonetemplate>
</asp:webpartzone>
</form>
</body>
</html>
<%@ page language="VB" %>
<%@ register tagprefix="uc1"
tagname="AccountUserControlVB"
src="AccountUserControlvb.ascx"%>
<!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>
Personalizable User Control with IWebPart Properties
</title>
</head>
<body>
<form id="form1" runat="server">
<asp:webpartmanager id="WebPartManager1" runat="server" />
<asp:webpartzone
id="zone1"
runat="server"
headertext="Main"
CloseVerb-Enabled="false">
<zonetemplate>
<uc1:AccountUserControlVB
runat="server"
id="accountwebpart"
title="Account Form"
Description="Account Form with default values."
CatalogIconImageUrl="MyCatalogIcon.gif"
TitleIconImageUrl="MyTitleIcon.gif"
TitleUrl="MyUrl.html"/>
</zonetemplate>
</asp:webpartzone>
</form>
</body>
</html>
Açıklamalar
Arabirim, IWebPart denetimlerle WebPart çalışma kullanıcı deneyimini geliştiren çeşitli kullanıcı arabirimi odaklı özellikler sağlar. Temel sınıftan türetilen denetimler oluşturduğunuzda, temel WebPart sınıf bu arabirimi uyguladığından arabirimdeki IWebPart tüm özelliklerin WebPart bir uygulamasını alırsınız.
Var olan kullanıcı denetimlerini, ASP.NET denetimleri veya bir Web Bölümleri uygulamasının parçası olarak sınıfından devralmayan WebPart özel sunucu denetimlerini kullanabilirsiniz ve bunlar arabirim tarafından IWebPart bildirilen bu kullanıcı arabirimi odaklı özellikleri de kullanabilir. Var olan sunucu denetimlerini bir WebPartZoneBase bölgeye yerleştirirseniz, çalışma zamanında bunlar bir GenericWebPart nesneyle sarmalanmış olur. GenericWebPart sınıfı temel sınıftan WebPart devraldığından, var olan sunucu denetimlerinin gerçek WebPart denetimler olarak davranmasını sağlar ve arabiriminin IWebPart özelliklerini ekler.
Bölgelere denetim olmayan WebPart sunucu denetimleri yerleştirirseniz, bunlar çalışma zamanında özellikleri kullanabilir IWebPart ve ayrıca bu özelliklerin değerlerini sayfanın işaretlemesinde (sayfa kalıcılığı biçiminde) sunucu denetimlerinde bildirebilirsiniz. Ancak, bu özellikler yalnızca çalışma zamanında sunucu denetimleri tarafından kullanılabildiğinden, IntelliSense gibi tasarım zamanı kodlama özellikleri, sunucu denetimlerinde bildirilen özellikleri tanımaz IWebPart . Sayfayı yüklediğinizde bu denetimlerde bildirilen özellikler çalışmaya devam eder, ancak Microsoft Visual Studio özellikleri tasarım zamanında geçerli olarak tanımaz. Tasarım zamanı kullanıcı deneyimini geliştirmek için özellikleri mevcut sunucu ve kullanıcı denetimlerine eklemek IWebPart istiyorsanız, arabirimi bir sunucu denetiminde uygulayabilirsiniz IWebPart .
Arabirimi uygulamanın IWebPart ana nedeni, expando (özel) özelliklerinin kullanımını desteklemeyen denetimlerdir. Expando özellikleri, arabirim aracılığıyla bir sınıfa dinamik olarak özellik olarak eklenebilen IAttributeAccessor dizelerdir. Sınıfı ve alt öğeleri de dahil olmak üzere WebControl bu arabirimi uygulayan denetimler expando özelliklerini kullanabilir. Bu nedenle, tüm ASP.NET sunucu denetimleri, bunlardan türetilen özel denetimler, Web kullanıcı denetimleri ve WebPart denetimleri expando özelliklerinin kullanımını destekler. Ancak doğrudan temel Control sınıftan devralan özel denetimler expando özelliklerini desteklemez. Bu nedenle, içinde bu denetimleri WebPartZonebildirirseniz, ve Descriptiongibi Title denetimler, özellikler üzerinde ortak IWebPart özellikleri bildiremezsiniz. Bu özellikleri bu tür denetimlerle kullanmak istiyorsanız arabirimini IWebPart uygulamanız gerekir.
Uygulayanlara Notlar
Normalde, temel WebPart sınıf arabirimi WebPart zaten uyguladığından IWebPart özel denetimlerde veya sunucu denetimlerinde arabirimi uygulamanız gerekmez. Bölgelere yerleştirilen WebPartZoneBase özel WebPart denetimler ve diğer sunucu denetimleri tüm IWebPart özellikleri kullanabilir.
Özel denetimde veya başka bir WebPart sunucu denetiminde arabirimi kendiniz uygulamanın IWebPart temel nedeni, varsayılan uygulamayı değiştirmek istemenizdir. Örneğin, bazı özellikler için varsayılan değerler sağlamak isteyebilirsiniz. Kullanıcı veya sunucu denetiminde arabirimi uygulamanın bir diğer nedeni de denetimde bu özelliklerle çalışma tasarım zamanı deneyiminin geliştirilmesidir.
Özellikler
| Name | Description |
|---|---|
| CatalogIconImageUrl |
Denetim kataloğundaki bir denetimi temsil eden bir WebPart görüntünün URL'sini alır veya ayarlar. |
| Description |
Araç İpuçlarında ve denetim kataloglarında WebPart kullanmak üzere denetimin ne yaptığını özetleyen kısa bir tümcecik alır veya ayarlar. |
| Subtitle |
Bir denetimin tam başlığını oluşturmak üzere özellik değeriyle Title birleştirilmiş bir WebPart dize alır. |
| Title |
Denetimin WebPart başlığını alır veya ayarlar. |
| TitleIconImageUrl |
Denetimin kendi başlık çubuğunda web bölümleri denetimini temsil etmek için kullanılan bir görüntünün URL'sini alır veya ayarlar. |
| TitleUrl |
Denetimle ilgili ek bilgiler için bir WebPart URL alır veya ayarlar. |