2016-06-22 11 views
0

Ich muss überprüfen, ob Inhaltsbereich leer ist, aber ich bekomme Fehler "Objekt Referenz nicht auf eine Instanz eingestellt", das ist mein Seitencontroller Ich habe auch currentPage.TabContentArea.IsEmpty versucht, immer noch gleichen Fehler. Der Inhaltsbereich ist leer, dies ist das erste Mal, dass ich versuche, es auszuführen, also muss ich prüfen, ob es leer ist, bevor ich den Code innerhalb der if-Anweisung ausführe.Episerver überprüfen, ob Inhaltsbereich leer ist

 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 ? 
     } 
    } 

Antwort

3

Die ContentArea-Eigenschaft kann null sein, daher müssen Sie currentPage.TabContentArea zuerst auf null überprüfen.

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

Das war die richtige Lösung, danke! :) – perkes456