2009-11-27 12 views
8

Para nuestros sitios de publicación, utilizamos la enumeración SPContext.Current.FormContext.FormMode para determinar si la página actual está en modo de edición. He visto que esto no funciona para un sitio de equipo en el que estoy trabajando actualmente. FormMode siempre se establece en 'Inválido'.Cómo saber si la página está en modo de edición en un sitio que no es de publicación

Sin embargo, cuando hago clic en Editar página en una página de muestra, la página cambia al modo de edición, por lo que debe haber alguna otra forma de saber que una página está en modo de edición. Entonces, ¿cómo puedo saber si estoy en modo de edición para una página que vive en un sitio de equipo?

Saludos. Jas.

Respuesta

8

Para mi escenario, he encontrado que puedo hacer uso del objeto WebPartManager para averiguar si la página actual está en modo de edición.

Dim wpm As WebPartManager = WebPartManager.GetCurrentWebPartManager(Page) 

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

El código anterior me informa si la página actual está en modo de edición, ya que la zona web está en modo de diseño. Cuando no está en modo de diseño, el DisplayMode generalmente será 'Examinar'.

+0

Es mejor para comprobar wpm.DisplayMode.AllowPageDesign ya que cubre tanto los casos "corrige" el "diseño" y - en la primera zona case parte web está en modo de diseño, en el segundo de su las partes web están en modo de edición; ambos casos muestran que la página está en modo de edición – Andrey

2

El SPContext.Current.FormContext.FormMode no se puede utilizar en OnInit; siempre es Inválido allí. Pruébalo más tarde; Lo uso en OnPreRender, por ejemplo.

El WebPartManager.DisplayMode se puede utilizar para comprobar si una parte del editor está activa en la zona del editor. Es algo adicional: puede tener la página en modo edición sin eso. Depende de lo que quiera verificar en su escenario.

Por cierto, utilice los miembros de solo lectura para la comparación, como: wpm.DisplayMode == WebPartManager.EditDisplayMode.

--- Ferda Prantl

Cuestiones relacionadas