У меня есть веб-сайт публикации с MOSS 2007, и мне нужно получить программный контент. Я знаю, что я могу использовать WebClient для отправки запроса на страницу, а затем проанализировать текст ответа. Но я хочу сделать это в модели SharePoint, так как масштаб очень тихий.Как программно визуализировать DataFormWebPart?
Веб-часть, которую я хочу визуализировать, - это DataFormWebPart, и они отображаются отлично, если смотреть в браузере. Но я получаю исключения при попытке сделать их программным путем.
Код:
var partMgr = siteCollection.RootWeb.GetLimitedWebPartManager(pageUrl, PersonalizationScope.Shared);
var sr = new StreamWriter(@"d:\temp\test.txt", false);
var htr = new HtmlTextWriter(sr);
foreach (WebPart part in partMgr.WebParts)
{
if (part.GetType() == new DataFormWebPart().GetType())
{
try
{
htr.WriteLine("");
part.RenderBeginTag(htr);
htr.WriteLine("");
part.RenderControl(htr);
htr.WriteLine("");
part.RenderEndTag(htr);
htr.WriteLine("");
}
catch (Exception exc)
{
htr.WriteLine("Message: " + exc.Message);
htr.WriteLine("StackTrace: " + exc.StackTrace);
htr.WriteLine("InnerException: " + (exc.InnerException == null).ToString());
}
}
}
sr.Close();
htr.Close();
Выход:
<div id="g_1722aa69_d0d7_4804_83fa_c8f4a250080a">
Message: Value cannot be null. Parameter name: page
StackTrace: at System.Web.UI.WebControls.WebParts.WebPartManager.GetCurrentWebPartManager(Page page)
at Microsoft.SharePoint.WebPartPages.WebPart.Render(HtmlTextWriter writer)
at ExtractPageData.Program.Main(String[] args) in D:\DNR-Playground\ExtractPageData\ExtractPageData\Program.cs:line 49
InnerException: False
<div id="g_1115045e_b0d7_41ce_ad19_15aab0f3871d">
Message: Value cannot be null. Parameter name: page
StackTrace: at System.Web.UI.WebControls.WebParts.WebPartManager.GetCurrentWebPartManager(Page page)
at Microsoft.SharePoint.WebPartPages.WebPart.Render(HtmlTextWriter writer)
at ExtractPageData.Program.Main(String[] args) in D:\DNR-Playground\ExtractPageData\ExtractPageData\Program.cs:line 49
InnerException: False
Как вы можете видеть на выходе, то начинают тег визуализируется, но управление не может быть оказана за счет part.Page
является null
и это атрибут readonly.