Sharepoint-Element Aktualisierung Ereignis - Ereignis zurück zu EditForm Seite kündigen?

StackOverflow https://stackoverflow.com/questions/2050466

  •  20-09-2019
  •  | 
  •  

Frage

Ich habe einen Ereignisempfänger für einen Inhaltstyp einige Daten in der ItemUpdating Ereignis zu validieren. Wenn ich das Ereignis abbrechen (einige der Daten beispielsweise nicht gültig ist), habe ich die Eigenschaften für ungültig true:

properties.Cancel = true;
properties.ErrorMessage = "...";

löscht Sharepoint die Aktualisierung Ereignis ok, aber zeigt die Standard-Sharepoint-Fehlerseite (mit der angegebenen Meldung). Das einzige Problem ist, habe ich eine Beschwerde habe, dass dies nicht wirklich sehr nützlich -. Wir zum EditForm Seite zurückkehren sollte, so können die Details aktualisiert werden

Hat jemand getan, ist es eine einfache Möglichkeit? Der einzige Vorschlag, den ich je hatte, ist, dass ich meine eigene Fehlerseite umsetzen kann, aber das ist klingt ziemlich schwere Lösung zu einem (theoretisch) einfachen Prozess.

War es hilfreich?

Lösung

Sie könnten versuchen, die Ausgabe HTML-Code (die auch enthält Javascript) in der Errormessage. Aber selbst wenn Sie das tun, ist das Problem, dass Sie keinen sicheren Weg zurück zu den Daten der Benutzer eingegeben hat. Entweder Sie machen einen HTTP / 301-Weiterleitung und dann ist es eine neue Seite zu laden, oder Sie machen den Client geht history.back() mit JavaScript und dann kann der Browser die Seite neu zu laden.

Der offizielle Weg, dies zu tun, ist, dass Sie eine Listendefinition erstellen und die Listenvorlage anpassen. Dann bearbeiten Sie die Bearbeitung von Formularvorlage und umfassen so viele Kontrollen ASP.Net Validator nach Bedarf. Dann implementieren, um die Server-Seite Logik, wie Sie benötigen. Dieser Artikel beschreibt die Technik: http://msdn.microsoft.com/en- us / library / aa543922.aspx

EDIT: Um eine benutzerdefinierte Steuerung für die Bearbeitung eines spezifischen content zu befestigen, fügen Sie ein XmlDocuments Abschnitt auf der Content Definition. Zum Beispiel wie folgt aus

<ContentType
    ..........

    <XmlDocuments>
      <XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms">
        <FormTemplates xmlns="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms">
          <Display>ContentTypeName_DispForm</Display>
          <Edit>ContentTypeName_EditForm</Edit>
          <New>ContentTypeName_NewForm</New>
        </FormTemplates>
      </XmlDocument>
    </XmlDocuments>
  .......

Dann erstellen Sie Ihre eigene yoursolution_controltemplates.ascx Datei, die auch solche Blöcke enthält: "

<SharePoint:RenderingTemplate ID="ContentTypeName_DispForm" runat="server"> 
<Template>
      <!-- put whatever controls you need here, we typically create a 
           separate custom control which implements everything-->
</Template>
</SharePoint:RenderingTemplate>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top