2016-06-22 2 views
0

コンテンツ領域が空であるかどうかを確認する必要がありますが、「オブジェクト参照がインスタンスに設定されていません」というエラーが表示されます。コンテンツ領域が空です。これは初めて実行しようとしているので、if文の中でコードを実行する前に空であることを確認する必要があります。Episerverは、コンテンツ領域が空であるかどうかをチェックします

 public class StandardPageController : PageController<StandardPage> 
    { 
     // GET: StandardPage 
     public ActionResult Index(StandardPage currentPage) 
     { 

      // this collection should be used in foreach loops 
      var tabItems = new List<TabViewModel>(); 


//this is where I get error 
      if(currentPage.TabContentArea.FilteredItems.Any()) 

{ 
      var contentAreaItems = currentPage.TabContentArea.FilteredItems.ToList(); 
      var contentLoader = ServiceLocator.Current.GetInstance<IContentLoader>(); 

      foreach (var contentAreaItem in contentAreaItems) 
      { 
       // get an instance of Tab Block 
       // If you didn't set any restrictions, ContentArea can contain anything. 
       // We need to check if blockData is of type PageTab 
       var blockData = contentLoader.Get<PageTab>(contentAreaItem.ContentLink); 
       if (blockData == null) continue; 

       tabItems.Add(new TabViewModel 
       { 

        Id = Guid.NewGuid(), 
        Title = blockData.TabTitle, 
        Text = blockData.TabContent 
       }); 
      } 
      ViewBag.items = tabItems; 
      } 
      return View(); // Should I return tabitems here ? 
     } 
    } 

答えて

3

ContentAreaプロパティはnullでもかまいません。したがって、currentPage.TabContentAreaで最初にnullをチェックする必要があります。

if(currentPage.TabContentArea != null && currentPage.TabContentArea.FilteredItems.Any()) { ... } 
+0

これは適切な解決策でした。ありがとうございました! :) – perkes456

関連する問題