WebPart.AfterDeserialize-Methode
Wird aufgerufen, nachdem ein SharePoint-Webpart-Eigenschaften aus der SharePoint-Datenbank oder aus einer Webpartdatei (.dwp) deserialisiert werden. Vorgeschlagene Ort für SharePoint-Webpart-Upgrade-Code.
Namespace: Microsoft.SharePoint.WebPartPages
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaration
Public Overridable Sub AfterDeserialize
'Usage
Dim instance As WebPart
instance.AfterDeserialize()
public virtual void AfterDeserialize()
Hinweise
Die AfterDeserialize -Methode unterstützt die Upgrade-Szenarien, in denen eine neue Version eines Webparts muss Änderungen an Eigenschaften gerecht zu werden, die für eine frühere Version eines Webparts gespeichert wurden. Wenn ein Webpart Entwickler einfach eine oder mehrere neue Eigenschaften hinzufügt, ist kein Upgrade Logik erforderlich. Wenn Eigenschaften werden gelöscht oder umbenannt, oder die Werte gespeichert geändert werden, und klicken Sie dann Überschreiben der AfterDeserialize -Methode eine Möglichkeit zum Behandeln von diese Änderungen, wenn ein SharePoint-Webpart bietet ist jedoch aktualisiert.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie eine Situation verarbeiten, wenn eine oder mehrere Eigenschaften aus der höhere Version eines Webparts entfernt wurden. Da Elemente, die die Assembly nicht erkennt der UnknownXmlElementCollection -Auflistung hinzugefügt werden, zeigt die im folgenden Codebeispiel wird dieser Auflistung durchlaufen und Entfernen von unbekannten Elemente.
Weitere Informationen zur Verwendung der AfterDeserialize -Methode beim Aktualisieren von Webparts finden Sie unter Aktualisieren einer Webpartassembly.
' Override the AfterDeserialize method to remove any items in
' the UnknownXmlElementCollection within the MyWebPartNamespace
Public Overrides Sub AfterDeserialize()
Try
Dim itemsRemoved As Boolean = False
If UnknownXmlElements.Count > 0 Then
Dim element As XmlElement
Dim index As Integer = UnknownXmlElements.Count - 1
' Loop from the end of the collection to eliminate the need to
' update the index based on whether or not an item was deleted.
While index >= 0
element = UnknownXmlElements(index)
' Check if the element is within the namespace.
' Do a case-insensitive match to be consistent with the
' XmlSerializer.
If element.NamespaceURI = "MyWebPartNamespace" Then
' If the element is in the namespace, remove it
' from the collection.
UnknownXmlElements.RemoveAt(index)
itemsRemoved = True
End If
index -= 1
End While
End If
' If your assembly is installed in the application's bin directory, which defaults to minimal trust,
' make sure that your Web Part assembly has UnsafeSaveOnGet permission or the following
' attempt to save changes will return an error.
If itemsRemoved Then
SaveProperties = True
End If
Catch Else
' Handle or ignore errors.
End Try
End Sub
// Override the AfterDeserialize method to remove any items in
// the UnknownXmlElementCollection within the MyWebPartNamespace
public override void AfterDeserialize()
{
try
{
bool itemsRemoved = false;
if (UnknownXmlElements.Count>0)
{
XmlElement element;
int index = UnknownXmlElements.Count - 1;
// Loop from the end of the collection to eliminate the need to
// update the index based on whether or not an item was deleted.
while (index >= 0)
{
element = UnknownXmlElements[index];
// Check if the element is within the namespace.
// Do a case-insensitive match to be consistent with the
// XmlSerializer.
if (element.NamespaceURI == "MyWebPartNamespace")
{
// If the element is in the namespace, remove it from the collection.
UnknownXmlElements.RemoveAt(index);
itemsRemoved = true;
}
--index;
}
}
// If your assembly is installed in the application's bin directory, which defaults to minimal trust,
// make sure that your Web Part assembly has UnsafeSaveOnGet permission or the following
// attempt to save changes will return an error.
if (itemsRemoved)
{
SaveProperties = true;
}
}
catch
{
// Handle or ignore errors.
}
}