Evento de Atualização do Item do SharePoint - Cancelar o evento de volta à página EditForm?

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

  •  20-09-2019
  •  | 
  •  

Pergunta

Eu tenho um receptor de evento para um tipo de conteúdo para validar alguns dados no evento ItemUpdating. Se eu cancelar o evento (alguns dos dados não são válidos, por exemplo), defino as propriedades canceladas como true:

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

O SharePoint cancela o evento de atualização OK, mas mostra a página de erro padrão do SharePoint (com a mensagem especificada). O único problema é que tenho uma reclamação de que isso não é realmente muito útil - devemos retornar à página Editform para que os detalhes possam ser atualizados.

Alguém fez isso, existe uma maneira fácil? A única sugestão que tive é que posso implementar minha própria página de erro, mas isso parece uma solução bastante pesada para um processo simples (teoricamente).

Foi útil?

Solução

Você pode tentar produzir o código HTML (que inclui JavaScript também) no errorMessage. Mas mesmo se você o fizer, o problema é que você não tem um caminho seguro de volta aos dados que o usuário inseriu. Ou você faz um redirecionamento HTTP/301 e depois é um novo carregamento de página, ou você faz o cliente ir history.back() com JavaScript e, em seguida, o navegador pode recarregar a página.

A maneira oficial de fazer isso é que você cria uma definição de lista e personaliza o modelo de lista. Em seguida, você edita o modelo de formulário de edição e inclui tantos controles do validador ASP.NET conforme necessário. Em seguida, implemente a lógica do lado do servidor conforme necessário. Este artigo explica a técnica: http://msdn.microsoft.com/en-us/library/aa543922.aspx

Editar: Para anexar um controle personalizado para a edição de um contentType específico, você adiciona uma seção XMLDocuments à sua definição de contentType. Por exemplo, assim

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

Então você cria o seu próprio yoursolution_controltemplates.ascx arquivo, que contém também esses blocos: "

<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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top