カスタム サイト定義から作成された SharePoint サイトがあります。サイト定義には次の機能があります。
- カスタム コンテンツ タイプ。
- schema.xml ファイルがそのコンテンツ タイプを参照するカスタム リスト テンプレート。
- 上記のリスト テンプレート機能を参照するリスト インスタンス機能。
サイトのプロビジョニング プロセス中に、上記の順序で C# コードを使用して、これらの各機能 (それぞれが SPWeb レベル) を有効にします。結果のサイトは期待どおりに見え、正常に動作しているように見えますが、サイトの「すべてのサイト コンテンツ」ページにカスタム リストが 2 回表示されるという奇妙なアーティファクトがあります。
私のリストは正常に動作します。そのアイテム レシーバーは正しく、1 回だけ起動します。SharePoint Manager (SPM)では、リストが 2 回表示されることもわかります。ツリーを展開して属性を確認すると、2 つのリスト (リスト内のリスト アイテムも) で同じように表示されます。私は自分自身をだまし、SPM が同じリストを 2 回見ているだけかもしれないと思っています。
それで、ここで何がうまくいかなかったのでしょうか?同じ名前のリストを複数作成するにはどうすればよいですか? このリストを正しく作成するにはどうすればよいですか? また、この動作を示す既存のサイトの奇妙さを適切にクリーンアップするにはどうすればよいでしょうか?
編集: Michael Stum の質問に応えて、サイトのリストをループして ID を取得するために、このコンソール アプリを作成しました。
using (SPSite site = new SPSite("http://myserver/projects/myproject"))
{
using (SPWeb web = site.OpenWeb())
{
var lists = web.Lists;
foreach (SPList list in lists)
{
Console.WriteLine(list.ID + ": " + list.Title);
}
}
}
このコードは私のリストを 2 回表示します -- 同じタイトル、同じ ID。
別の編集: このサイトの SharePoint コンテンツ データベースを調べて、次のクエリを実行しました。
SELECT * FROM AllLists where tp_webid = '<my SPWeb guid>'
これにより、上記の C# コードから取得したタイトルと GUID を持つ実際のリストは 1 つしかないことがわかります。サイトを閲覧しているときに、これらの複数のエントリが表示される原因は何ですか?