IPersonalizable.IsDirty 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
컨트롤에서 관리하는 사용자 지정 데이터가 변경되었는지 여부를 나타내는 값을 가져옵니다.
public:
property bool IsDirty { bool get(); };
public bool IsDirty { get; }
member this.IsDirty : bool
Public ReadOnly Property IsDirty As Boolean
속성 값
IPersonalizable 인터페이스로 관리되는 사용자 지정 데이터가 변경되었으면 true
이고, 그렇지 않으면 false
입니다.
예제
다음 코드 예제에는 사용 방법을 보여 줍니다.는 IsDirty 속성입니다. 예제의 첫 번째 부분은 호스팅하는 웹 페이지를 WebPart 제어 합니다.
<%@ Page Language="C#" %>
<%@ Register TagPrefix="dict"
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">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>IPersonalizable</title>
</head>
<body>
<form id="form1" runat="server">
<asp:WebPartManager ID="mgr" runat="server" />
<div>
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<dict:urllistwebpart id="listwp1" runat="server"
title="URL List WebPart" />
</ZoneTemplate>
</asp:WebPartZone>
</div>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Register TagPrefix="dict"
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">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>IPersonalizable</title>
</head>
<body>
<form id="form1" runat="server">
<asp:WebPartManager ID="mgr" runat="server" />
<div>
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<dict:urllistwebpart id="listwp1" runat="server"
title="URL List WebPart" />
</ZoneTemplate>
</asp:WebPartZone>
</div>
</form>
</body>
</html>
예제의 두 번째 부분은 사용자 지정 코드 WebPart 이라는 컨트롤 UrlListWebPart
합니다. 이 파일은 예제를 실행 하려면 App_Code 디렉터리에 배치 되어야 합니다. 소스 코드를 구현 하는 참고를 IsDirty 속성입니다.
namespace Samples.AspNet.CS.Controls
{
using System;
using System.Collections;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Web;
using System.Web.UI;
using System.Security.Permissions;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal)]
public class UrlListWebPart : WebPart, IPersonalizable
{
private ArrayList _sharedUrls;
private ArrayList _userUrls;
private bool _listDirty;
private TextBox _nameTextBox;
private TextBox _urlTextBox;
private Button _addButton;
private BulletedList _list;
protected override void CreateChildControls()
{
Label nameLabel = new Label();
Label urlLabel = new Label();
LiteralControl breakLiteral1 = new LiteralControl("<br />");
LiteralControl breakLiteral2 = new LiteralControl("<br />");
LiteralControl breakLiteral3 = new LiteralControl("<br />");
_nameTextBox = new TextBox();
_urlTextBox = new TextBox();
_addButton = new Button();
_list = new BulletedList();
nameLabel.Text = "Name: ";
urlLabel.Text = "URL: ";
_nameTextBox.ID = "nameTextBox";
_urlTextBox.ID = "urlTextBox";
_addButton.Text = "Add";
_addButton.ID = "addButton";
_addButton.Click += new EventHandler(this.OnClickAddButton);
_list.DisplayMode = BulletedListDisplayMode.HyperLink;
_list.ID = "list";
Controls.Add(nameLabel);
Controls.Add(_nameTextBox);
Controls.Add(breakLiteral1);
Controls.Add(urlLabel);
Controls.Add(_urlTextBox);
Controls.Add(breakLiteral2);
Controls.Add(_addButton);
Controls.Add(breakLiteral3);
Controls.Add(_list);
}
private void OnClickAddButton(object sender, EventArgs e)
{
string name = _nameTextBox.Text.Trim();
string url = _urlTextBox.Text.Trim();
Pair p = new Pair(name, url);
if (WebPartManager.Personalization.Scope == PersonalizationScope.Shared)
{
_sharedUrls ??= new ArrayList();
_sharedUrls.Add(p);
}
else
{
_userUrls ??= new ArrayList();
_userUrls.Add(p);
}
OnUrlAdded();
}
protected virtual void OnUrlAdded()
{
_listDirty = true;
ChildControlsCreated = false;
}
protected override void RenderContents(HtmlTextWriter writer)
{
if (_sharedUrls != null)
{
foreach (Pair p in _sharedUrls)
{
_list.Items.Add(new ListItem((string)p.First, (string)p.Second));
}
}
if (_userUrls != null)
{
foreach (Pair p in _userUrls)
{
_list.Items.Add(new ListItem((string)p.First, (string)p.Second));
}
}
base.RenderContents(writer);
}
public virtual bool IsDirty
{
get
{
return _listDirty;
}
}
public new virtual void Load(PersonalizationDictionary state)
{
if (state != null)
{
PersonalizationEntry sharedUrlsEntry = state["sharedUrls"];
if (sharedUrlsEntry != null)
{
_sharedUrls = (ArrayList)sharedUrlsEntry.Value;
}
PersonalizationEntry userUrlsEntry = state["userUrls"];
if (userUrlsEntry != null)
{
_userUrls = (ArrayList)userUrlsEntry.Value;
}
}
}
public virtual void Save(PersonalizationDictionary state)
{
if ((_sharedUrls != null) && (_sharedUrls.Count != 0))
{
state["sharedUrls"] = new PersonalizationEntry(_sharedUrls, PersonalizationScope.Shared);
}
if ((_userUrls != null) && (_userUrls.Count != 0))
{
state["userUrls"] = new PersonalizationEntry(_userUrls, PersonalizationScope.User);
}
}
}
}
Imports System.Collections
Imports System.ComponentModel
Imports System.Diagnostics
Imports System.Drawing
Imports System.Web
Imports System.Web.UI
Imports System.Security.Permissions
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 UrlListWebPart
Inherits WebPart
Implements IPersonalizable
Private _sharedUrls As ArrayList
Private _userUrls As ArrayList
Private _listDirty As Boolean
Private _nameTextBox As TextBox
Private _urlTextBox As TextBox
Private _addButton As Button
Private _list As BulletedList
Protected Overrides Sub CreateChildControls()
Dim nameLabel As New Label()
Dim urlLabel As New Label()
Dim breakLiteral1 As New LiteralControl("<br />")
Dim breakLiteral2 As New LiteralControl("<br />")
Dim breakLiteral3 As New LiteralControl("<br />")
_nameTextBox = New TextBox()
_urlTextBox = New TextBox()
_addButton = New Button()
_list = New BulletedList()
nameLabel.Text = "Name: "
urlLabel.Text = "URL: "
_nameTextBox.ID = "nameTextBox"
_urlTextBox.ID = "urlTextBox"
_addButton.Text = "Add"
_addButton.ID = "addButton"
AddHandler _addButton.Click, AddressOf Me.OnClickAddButton
_list.DisplayMode = BulletedListDisplayMode.HyperLink
_list.ID = "list"
Controls.Add(nameLabel)
Controls.Add(_nameTextBox)
Controls.Add(breakLiteral1)
Controls.Add(urlLabel)
Controls.Add(_urlTextBox)
Controls.Add(breakLiteral2)
Controls.Add(_addButton)
Controls.Add(breakLiteral3)
Controls.Add(_list)
End Sub
Private Sub OnClickAddButton(ByVal sender As Object, ByVal e As EventArgs)
Dim name As String = _nameTextBox.Text.Trim()
Dim url As String = _urlTextBox.Text.Trim()
Dim p As New Pair(name, url)
If WebPartManager.Personalization.Scope = PersonalizationScope.Shared Then
If _sharedUrls Is Nothing Then
_sharedUrls = New ArrayList()
End If
_sharedUrls.Add(p)
Else
If _userUrls Is Nothing Then
_userUrls = New ArrayList()
End If
_userUrls.Add(p)
End If
OnUrlAdded()
End Sub
Protected Overridable Sub OnUrlAdded()
_listDirty = True
ChildControlsCreated = False
End Sub
Protected Overrides Sub RenderContents(ByVal writer As HtmlTextWriter)
If Not (_sharedUrls Is Nothing) Then
Dim p As Pair
For Each p In _sharedUrls
_list.Items.Add(New ListItem(CStr(p.First), CStr(p.Second)))
Next p
End If
If Not (_userUrls Is Nothing) Then
Dim p As Pair
For Each p In _userUrls
_list.Items.Add(New ListItem(CStr(p.First), CStr(p.Second)))
Next p
End If
MyBase.RenderContents(writer)
End Sub
Public Overridable ReadOnly Property IsDirty() As Boolean _
Implements IPersonalizable.IsDirty
Get
Return _listDirty
End Get
End Property
Public Overridable Shadows Sub Load(ByVal state As PersonalizationDictionary) _
Implements IPersonalizable.Load
If Not (state Is Nothing) Then
Dim sharedUrlsEntry As PersonalizationEntry = state("sharedUrls")
If Not (sharedUrlsEntry Is Nothing) Then
_sharedUrls = CType(sharedUrlsEntry.Value, ArrayList)
End If
Dim userUrlsEntry As PersonalizationEntry = state("userUrls")
If Not (userUrlsEntry Is Nothing) Then
_userUrls = CType(userUrlsEntry.Value, ArrayList)
End If
End If
End Sub
Public Overridable Sub Save(ByVal state As PersonalizationDictionary) _
Implements IPersonalizable.Save
If Not (_sharedUrls Is Nothing) AndAlso _sharedUrls.Count <> 0 Then
state("sharedUrls") = New PersonalizationEntry(_sharedUrls, PersonalizationScope.Shared)
End If
If Not (_userUrls Is Nothing) AndAlso _userUrls.Count <> 0 Then
state("userUrls") = New PersonalizationEntry(_userUrls, PersonalizationScope.User)
End If
End Sub
End Class
End Namespace
브라우저에서 페이지를 로드 합니다. 로 시작 하는 실제 URL을 추가 하 고 URL을 나타내는 이름 입력 http://
를 클릭 합니다 추가 URL 추가 단추입니다.
설명
컨트롤에서 관리하는 데이터가 변경되면 컨트롤은 "더티"로 간주됩니다. 컨트롤은 인터페이스를 통해 관리하는 사용자 지정 데이터가 변경된 경우 를 IPersonalizable 반환 true
해야 합니다. 컨트롤을 반환 하는 경우 true
에서이 속성을 컨트롤의 Save 인터페이스 메서드 구현 속성 값을 추출 하는 동안 호출 됩니다.
참고
이 속성은 POST 요청을 처리 하는 두 번째 단계 동안 개인 설정 인프라에 의해 자동으로 검사 됩니다. 그러나 GET 요청에 대해 반환 되는 값에서는 IsDirty 속성을 확인 하지 않습니다. 일부 다른 이벤트에 "더티"에서 관리 하는 데이터 뿐 아니라 컨트롤 상태-간주 되기 위해 컨트롤을 유발한 것으로 IPersonalizable-저장 합니다. 컨트롤을 표시할 수 자체적으로 "더티" GET 요청을 하는 동안 일부 매우 구체적인 경계 조건에서 개인 설정 인프라 고려 컨트롤 "더티" GET 요청을 하는 동안 다음 아니면 Save 가 항상 호출 됩니다.
컨트롤 관련 참조할 수 있습니다 WebPartManager 제어 하 고 확인을 Scope 속성을 현재 범위를 결정 합니다. 컨트롤의 사용자 지정 데이터의 "더티" 상태는 현재 범위에 대 한 적합 해야 합니다.
적용 대상
.NET