Как программно отрендерить DataFormWebPart?
-
27-10-2019 - |
Вопрос
У меня есть сборка веб-сайта для публикации с помощью MOSS 2007, и мне нужно программно получить содержимое страницы.Я знаю, что могу использовать WebClient, чтобы отправить запрос на страницу, а затем проанализировать текст ответа.Но я хочу сделать это в модели SharePoint, поскольку масштаб довольно велик.
Веб-части, которые я хочу отобразить, - это DataFormWebPart, и они отлично отображаются при просмотре в браузере.Но я получаю исключения при попытке отрисовать их программно.
Код:
родовое словоВывод:
родовое слово Как вы можете видеть в выходных данных, начальный тег отображается, но элемент управления не может быть отображен из-за того, что part.Page
является null
и это атрибут только для чтения.
Решение
Это просто не сработает.Веб-части требуют правильного кода SPContext
, который настраивается во время обработки HTTP-запроса в конвейере ASP.NET.Нет простого ответа, как это преодолеть.По сути, вам нужно будет смоделировать HTTP-запрос к странице, которую необходимо отобразить в памяти.
Кроме того, это выражение part.GetType() == new DataFormWebPart().GetType()
далеко от идеала.Скорее используйте part.GetType() == typeof(DataFormWebPart)
, чтобы предотвратить создание экземпляров и возможные нежелательные побочные эффекты.