Sharepoint evento elemento actualización - cancela evento volver a la página EditForm?

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

  •  20-09-2019
  •  | 
  •  

Pregunta

Tengo un receptor de eventos para un tipo de contenido para validar algunos datos en caso ItemUpdating. Si cancelo el evento (algunos de los datos no es válida, por ejemplo), me puse las propiedades cancelan true:

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

SharePoint cancela el evento de actualización bien, pero muestra la página de error estándar de SharePoint (con el mensaje especificado). El único problema es, tengo una queja de que esto no es realmente muy útil -. Deberíamos volver a la página EditForm por lo que los datos se pueden actualizar

Alguien ha hecho esto, es que hay una manera fácil? La única sugerencia que he tenido es que puedo aplicar a mi propia página de error, pero eso es una solución que suena bastante pesado a un proceso (en teoría) simple.

¿Fue útil?

Solución

Se podría tratar de código HTML de salida (que incluye Javascript también) en el ErrorMessage. Pero incluso si lo hace, el problema es que no hay manera segura de regreso a los datos ha entrado el usuario. O se hace un HTTP / redireccionamiento 301 y luego se trata de una nueva carga de la página, o hacer que el cliente vaya history.back() con JavaScript y luego el navegador puede recargar la página.

La forma oficial de hacer esto es que se crea una definición de lista y personalizar la plantilla de lista. A continuación, se edita la plantilla de formulario de edición e incluir la mayor cantidad de controles de validación ASP.Net, según sea necesario. A continuación, aplicar la lógica del lado del servidor como sea necesario. En este artículo se explica la técnica: http://msdn.microsoft.com/en- es / library / aa543922.aspx

EDIT: Para adjuntar un control personalizado para la edición de un contenttype específica, se agrega una sección XmlDocuments a su definición ContentType. Por ejemplo, como este

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

A continuación, crear su propio archivo yoursolution_controltemplates.ascx, que contiene además de tales bloques: "

<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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top