1

新しいページ レイアウトをインストールする SharePoint 機能があります。

この機能の要件は、既定の Web パーツを使用してページ レイアウトをインストールすることでした。これにより、ユーザーが [ページの作成] アクションを実行すると、Web パーツがページに既に存在するページが作成されます。

そのため、ページの要素定義に AllUsersWebPart ノードを追加しようとしました。

<Elements>
    ...
    <Module ...>
        ...
        <File ...>
            <AllUsersWebPart ...>
                ...
            </AllUsersWebPart>
        </File>
        ...
    </Module>
</Elements>

機能などをインストール、展開しましたが、もちろん、役立つ「このオブジェクトにパラメーターなしのコンストラクターが定義されていません」というエラーが表示されました。これは、Elements.xml での私の定義の問題である可能性が最も高いです。

今私が抱えている本当の問題は、機能定義から AllUsersWebPart セクションを削除しようとしたことです (作成時にページに Web パーツがないように)。SharePoint の素晴らしいバグのために、Web パーツは機能の定義が異なっているにもかかわらず、ページ レイアウトはまだ定義されたままです。 #2)。

機能のアップグレードと削除/再インストールを試みましたが、効果がありませんでした - この Web パーツを機能/コンテンツ データベースから削除して、ページ レイアウトをインストールするか、正しい Web パーツ定義を配置するだけの機能を持たせるにはどうすればよいですか?機能で?

4

2 に答える 2

1

わかりました。ページレイアウトを機能させました。これが役立つ場合に備えて、次の手順を実行しました。

1Webパーツページメンテナンスモードでページレイアウトを編集します。

http://<server name>/_catalogs/masterpage/<page name>.aspx?contents=1

そこからすべてのWebパーツインスタンスを削除します。

2 Designerで(サーバー上で)レイアウトを開き、WebPartZone/ZoneTemplateが空であることを確認します。これを確認した後、ページレイアウトが承認済みに設定されていることを確認してください。

この後、ページレイアウトは使用可能になります。ページレイアウト機能を問題なく削除して再インストールすることができました。

Webパーツ定義がデータベースに残っているように見えるので、機能が更新/再インストールされたときに、それらはすでにページ/Webパーツゾーンにリンクされています。これを整理することは、おそらくページレイアウト機能の機能受信機のコードで行われるべきです。これを書くことに慣れたら、どこかに投稿します...

于 2009-05-14T15:17:44.217 に答える
0

機能をアンインストールするときに、ページレイアウトがマスターページ/ページレイアウトカタログから削除されていることを確認しましたか?

コンテンツファイル(pagelayout)の追加に使用される機能要素は、機能を非アクティブ化するときにコンテンツファイルを削除しません。

于 2009-05-14T11:46:00.123 に答える