2009-11-27 10 views
8

Per i nostri siti di pubblicazione viene utilizzato l'enum SPContext.Current.FormContext.FormMode per determinare se la pagina corrente è in modalità di modifica. Ho visto che questo non funziona per un sito di squadra al momento sto lavorando. FormMode è sempre impostato su "Non valido".Come sapere se la pagina è in modalità di modifica su un sito non di pubblicazione

Tuttavia, quando faccio clic su Modifica pagina su una pagina di esempio, la pagina passa alla modalità di modifica in modo che ci sia un altro modo per sapere che una pagina è in modalità di modifica. Quindi, come posso sapere se sono in modalità di modifica per una pagina che vive in un sito di un team?

Cheers. Jas.

risposta

8

Per il mio scenario, ho scoperto che posso utilizzare l'oggetto WebPartManager per scoprire se la pagina corrente è in modalità di modifica.

Dim wpm As WebPartManager = WebPartManager.GetCurrentWebPartManager(Page) 

result = wpm.DisplayMode.Name.Equals("design", StringComparison.InvariantCultureIgnoreCase) 

Il codice sopra riportato mi informa se la pagina corrente è in modalità di modifica, poiché la zona webpart è in modalità progettazione. Quando non si è in modalità progettazione, lo DisplayMode sarà di solito 'Sfoglia'.

+0

E 'meglio controllare wpm.DisplayMode.AllowPageDesign in quanto copre sia "design" e casi "Edit" - nella prima zona parte caso web è in modalità di progettazione, in secondo uno dei suoi le parti Web sono in modalità di modifica: entrambi i casi mostrano che la pagina è in modalità di modifica – Andrey

2

Non è possibile utilizzare SPContext.Current.FormContext.FormMode in OnInit; è sempre invalido lì. Provalo più tardi; Lo uso in OnPreRender, ad esempio.

Il WebPartManager.DisplayMode può essere utilizzato per verificare se una parte dell'editor è attiva nell'area dell'editor. È una cosa aggiuntiva: puoi avere la pagina in modalità modifica senza quella. Dipende da cosa vuoi controllare nel tuo scenario.

A proposito, utilizzare i membri di sola lettura per il confronto, ad esempio: wpm.DisplayMode == WebPartManager.EditDisplayMode.

--- Ferda Prantl

Problemi correlati