Share via


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.
    }
}

Siehe auch

Referenz

WebPart Klasse

WebPart-Member

Microsoft.SharePoint.WebPartPages-Namespace