プログラムでDataFormWebPartをレンダリングする方法は?
-
27-10-2019 - |
質問
MOSS 2007で構築された発行Webサイトがあり、プログラムでページコンテンツを取得する必要があります。WebClientを使用してページにリクエストを送信し、応答テキストを解析できることを知っています。ただし、規模が非常に大きいため、SharePointモデルで実行したいと思います。
レンダリングしたいWebパーツはDataFormWebPartであり、ブラウザーで表示すると正常に表示されます。しかし、プログラムでレンダリングしようとすると例外が発生します。
コード: ジェネラコディセタグプレ
出力: ジェネラコディセタグプレ
出力でわかるように、beginタグはレンダリングされますが、part.Page
がnull
であり、読み取り専用属性であるため、コントロールをレンダリングできません。
解決
これは機能しません。Webパーツには、ASP.NETパイプラインでのHTTP要求処理中に設定される適切なSPContext
が必要です。それを克服する方法は簡単な答えはありません。基本的に、メモリ内にレンダリングする必要があるページへのHTTPリクエストをシミュレートする必要があります。
また、この表現part.GetType() == new DataFormWebPart().GetType()
は理想からはほど遠いです。むしろ、part.GetType() == typeof(DataFormWebPart)
を使用して、インスタンス化や望ましくない副作用の可能性を防ぎます。
所属していません StackOverflow