2016-06-22 1 views
0

Мне нужно проверить, пустует ли область содержимого, но я получаю сообщение об ошибке «Ссылка на объект не установлена ​​в экземпляр», это мой контролер страницы, который я тоже пробовал currentPage.TabContentArea.IsEmpty, по-прежнему такая же ошибка. Область содержимого пуста, это первый раз, когда я пытаюсь запустить его, поэтому мне нужно проверить, пуст ли он до выполнения кода внутри оператора 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 может быть пустым, поэтому вам нужно сначала проверить значение CurrentPage.TabContentArea для null.

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

Это было правильное решение, спасибо! :) – perkes456

Смежные вопросы