SPWeb でのタイトル変更イベントのキャプチャ
-
09-09-2019 - |
質問
SPWebEventReceiver を使用して特定の SPWeb をリッスンしています。 無事に に発砲 ウェブ移動しました イベント。ウェブが移動されると、新しい場所/タイトルでリストを更新します。
私ができるようにしたいのは、Web がいつになっているかを聞くことです。 名前が変更されました 。これを行うには、項目リスナーをアタッチし、ItemUpdated イベントを待機しますか?もしそうなら、コードの小さなスニペットをいただければ幸いです。ありがとう!
解決
これは SharePoint OM のバグのようです。 イベント レシーバーは Web の名前が変更されたときに起動されることになっているのは明らかですが、実際には起動されません。 Web の URL が変更された場合にのみ起動されます。
他のヒント
スティーブは、私が見る限り、spwebeventReceiverはspwebで次のイベントのみを公開しています(http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spwebeventreceiver_members.aspx)
- サイト削除済み
- サイトの削除
- ウェブ削除済み
- 水削除
- ウェブ移動しました
- ウェブ移動
ItemAdded は、SPListItem オブジェクトに適用できる SPItemEventReceiver で定義されます。
SPWeb の Title プロパティはプロパティ バッグ (http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.properties.aspx).
プロパティバッグで .Update() が呼び出されたときにイベントを利用できるようには見えません。タイトルが更新されたとき。
- Web 名の変更によって WebMoved がトリガーされるはずだと思います。
- サイトのタイトルを変更してもアクションは発生しません。
質問:どのような変化を取り入れたいですか?たとえば、あらゆるメタデータを内部のリストに保存できるため、多くのイベントがサポートされます。
これはバグではないと思いますが、単にドキュメントの解釈が間違っているだけだと思います。あなたが述べたように、ドキュメントには、WebMoving イベントと WebMoved イベントが、サイトの URL が変更または名前変更されることによってトリガーされることが示されています。
から MSDN ドキュメント:「既存の Web サイトの名前が変更されるか、別の親オブジェクトに移動される前に発生する同期 Before イベント。」
ただし、UI で変更されるのはサイトの「名前」ではなく、サイトのタイトルです。SPWeb オブジェクトには、オブジェクト モデルを通じてアクセスできる "Name" プロパティがあり、その Name プロパティを更新して SPWeb.Update() を呼び出すと、実際に WebMoved イベントがトリガーされます。問題は、このプロパティがサイトの Web ベースの設定ページを通じて公開されず、「タイトル」フィールドのみが公開され、このフィールドの変更によってイベントがトリガーされないことです。これは少し直感に反し、誤解を招きやすいように思えますが、ドキュメントを文字通り読むと、ドキュメントどおりに動作します。