Capturando evento de alteração de título em SPWeb
-
09-09-2019 - |
Pergunta
Eu estou escutando em um SPWeb particular usando um SPWebEventReceiver que é sucesso disparando no WebMoved evento. Quando a web é movido para atualizar uma lista com a nova localização / título.
O que eu gostaria de ser capaz de fazer é ouvir quando a Web é renomeado . Eu faço isso, anexando um ouvinte item e à espera de um evento ItemUpdated? Se assim for eu gostaria de receber um pequeno trecho de código! Obrigado!
Solução
Parece que este é um bug com o SharePoint OM. O receptor de eventos é claramente suposto fogo quando o nome de um web é alterado, mas não. ele só é acionado quando o URL da web é alterado.
Outras dicas
Steve, Tanto quanto eu posso ver, SPWebEventReceiver expõe apenas os seguintes eventos em um SPWeb ( http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spwebeventreceiver_members.aspx )
- SiteDeleted
- SiteDeleting
- WebDeleted
- WedDeleting
- WebMoved
- WebMoving
ItemAdded é definida em SPItemEventReceiver que é aplicável a SPListItem objetos.
A propriedade Título de um SPWeb é armazenado em um recipiente de propriedades ( http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.properties.aspx ).
Não parece como você pode tocar em eventos quando .Update () é chamado no saco da propriedade, por exemplo, quando Título é atualizado.
- Eu diria que uma renomeação do nome da Web deve acionar WebMoved.
- Site título renomeação aciona nenhuma ação.
Pergunta: Que mudanças você quer tot torneira? Porque qualquer metadados, por exemplo, poderiam ser armazenados em listas dentro, que suporta muitos eventos.
Eu não acredito que é um erro, eu acredito que é simplesmente uma má interpretação da documentação. Como você disse, a documentação indica que o WebMoving e WebMoved eventos são acionados por URL do site que está sendo modificado ou de ser renomeado:
MSDN Doc : "Synchronous antes evento que ocorre antes de um site existente foi renomeado ou movido para um objeto pai diferente."
No entanto, o que fica alterado na interface do usuário não é o "nome" do site, mas o título do site. O objeto SPWeb tem uma propriedade "Name", que é acessível através do modelo de objeto e atualização que Nome da propriedade e chamando SPWeb.Update () faz, de facto, disparar o evento WebMoved. O problema é que esta propriedade não é exposta através da página de configurações baseadas em web para o site, apenas o campo "Title" é exposta, e essa mudança de campo não aciona o evento. Enquanto isso parece um contra-senso bit e até enganosa, se você ler a documentação, literalmente, ele está se comportando exatamente como documentado.