Sharepoint evento oggetto di aggiornamento - annullare evento torna alla pagina EditForm?

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

  •  20-09-2019
  •  | 
  •  

Domanda

Ho un ricevitore di eventi per un tipo di contenuto per convalidare alcuni dati in caso ItemUpdating. Se cancello l'evento (alcuni dei dati non è valida per esempio), ho impostato le proprietà Cancel su true:

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

SharePoint annulla l'evento di aggiornamento ok, ma mostra la pagina di errore di SharePoint standard (con il messaggio specificato). L'unico problema è, ho una denuncia che questo non è in realtà molto utile -. Dovremmo tornare alla pagina EditForm in modo che i dettagli possono essere aggiornati

Qualcuno ha fatto questo, c'è un modo semplice? L'unico suggerimento che ho avuto è che posso realizzare il mio pagina di errore, ma questo è un bel suono soluzione pesante per un (teoricamente) processo semplice.

È stato utile?

Soluzione

Si potrebbe provare a codice output HTML (che include JavaScript pure) nella ErrorMessage. Ma anche se lo fai, il problema è che non si ha modo sicuro tornare ai dati che l'utente ha inserito. O si fa un HTTP / redirect 301 e poi è un nuovo caricamento della pagina, oppure fai il cliente andare history.back() con JavaScript e poi il browser può ricaricare la pagina.

Il modo ufficiale di questa operazione è che si crea una definizione di elenco e personalizzare il modello di elenco. Poi si modifica il modello di modulo di modifica e di includere il maggior numero di controlli ASP.Net di convalida, se necessario. Quindi, implementare la logica lato server di cui hai bisogno. Questo articolo spiega la tecnica: http://msdn.microsoft.com/en- us / library / aa543922.aspx

EDIT: Per collegare un controllo personalizzato per la modifica di un ContentType specifica, si aggiunge una sezione XMLDocument alla definizione ContentType. Per esempio, come questo

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

Quindi si crea un tuo file yoursolution_controltemplates.ascx, che contiene oltre tali blocchi: "

<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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top