2016-05-31 145 views
0

代码看起来如下:如何组织重复代码?

1)我有一些图片:

var imageIds = caseStudyPage.Images; 
foreach (var imageId in imageIds) 
{ 
    byte[] csImage = GetImage(imageId); 
} 

2),我有结构如下:

var document = new Document(); 
document 
    .AddField(new TextField("CS Counter Basic Name", "Case Study")) 
    .AddField(new TextField("CS Counter Number", _numberInParentDocument.ToString())) 
    .AddField(new TextField("Page Title", caseStudyPage.Page_Title)) 
    .AddField(new TextField("Common Footer Text 1", commonFooterText1)) 
    .AddField(new TextField("Page Title Content", caseStudyPage.Page_Title)) 
    .AddTable(new Table("Images") 
     .AddRow(new TableRow().AddField(new ImageField("Image", imageBytes, ImageType.Jpeg)) 
      .AddField(new TextField("Overview", caseStudyPage.Overview)) 
      .AddField(new TextField("Engagement", caseStudyPage.Engagement)) 
      .AddField(new TextField("Publish Date", caseStudyPage.Publish_Date.ToString("MMM. dd, yyyy"))) 
    .AddField(new TextField("Common Footer Text 2", commonFooterText2)))); 

我需要把文档结构从2)从1)的循环内部,以设置ImageField的imageBytes变量,但文档应该只有一个。我不知道循环只有这部分如何:

.AddRow(new TableRow().AddField(new ImageField("Image", imageBytes, ImageType.Jpeg)) 

回答

0
var document = new Document(); 
document 
    .AddField(new TextField("CS Counter Basic Name", "Case Study")) 
    .AddField(new TextField("CS Counter Number", _numberInParentDocument.ToString())) 
    .AddField(new TextField("Page Title", caseStudyPage.Page_Title)) 
    .AddField(new TextField("Common Footer Text 1", commonFooterText1)) 
    .AddField(new TextField("Page Title Content", caseStudyPage.Page_Title)); 

var table = new Table("Images"); 
foreach (var imageId in imageIds) 
{ 
    byte[] csImage = GetImage(imageId); 
    table.AddRow(new TableRow().AddField(new ImageField("Image", csImage, ImageType.Jpeg)) 
      .AddField(new TextField("Overview", caseStudyPage.Overview)) 
      .AddField(new TextField("Engagement", caseStudyPage.Engagement)) 
      .AddField(new TextField("Publish Date", caseStudyPage.Publish_Date.ToString("MMM. dd, yyyy"))); 
} 

document.AddTable(table); 
document.AddField(new TextField("Common Footer Text 2", commonFooterText2)))); 
+0

有一个错误: 严重\t代码\t说明\t项目\t文件\t线\t抑制状态 错误\t CS1061 \t“文件”不不包含'AddRow'的定义,并且没有找到接受类型'Document'的第一个参数的扩展方法'AddRow'(可以找到缺少使用指令或程序集引用吗?)\t EPAM.Lookbook.Sitecore \t C:\项目\ EPM-lkbk的\ src \ EPAM.Lookbook.Sitecore \ CMS \ PDF \ NewPdfBuilder.cs 主动 – tesicg

+0

我已经找到了解决办法: IEnumerable的

表= document.Tables; tables.ElementAt(0).AddRow(new TableRow()。AddField(new ImageField(“Image”,csImage,ImageType.Jpeg)) – tesicg