2016-12-22 5 views
0

Я работаю на веб-сайте Umbraco 7, где продукты фильтруются булевым.Значение Bool не может быть 0:

  • Истинные = мужчины
  • Ложные = женщины

Я Request.QueryString.Get("gender") и получать true или false значение, которое я анализирую в subPage.GetPropertyValue<bool>("gender"), который затем делает из продуктов, что является либо true или false. Эта часть отлично работает.

Однако, если у меня нет никакого QueryStrying.Get("gender") в URL возвращает ошибку, которая говорит Value cannot be null.

Как предотвратить это? Я попытался обертывание var genderQuery с @if (Request.QueryString.Get("gender") != null), но тогда я не могу грейферы его изнутри foreach

Мой код:

@if (subPages.Count() > 0) 
    { 
     <ul> 
      @foreach (var subPage in subPages) 
      { 
       var genderQuery = Request.QueryString.Get("gender"); 

       if (subPage.Children.Count() > 0 && subPage.GetPropertyValue<bool>("gender") == bool.Parse(genderQuery)) 
       { 
        <li class="child @(CurrentPage.Name == subPage.Name ? currentClass :"")"> 

         <a href="@subPage.Url">@subPage.Name </a> 
         <a href="@subPage.Parent.Parent.Url" class="@(CurrentPage.Name == subPage.Name ? currentClass : "hide")"><i class="fa fa-close"></i></a> 
        </li> 
       } 
      } 
     </ul> 
    } 
+0

Ну что же вы хотите, чтобы произошло, если 'genderQuery' имеет значение null, т. е. это не в строке запроса? –

+0

@EdPlunkett: Нет, 'genderQuery' - это' string', а не 'bool?' Вообще. –

+0

@JonSkeet Derp, спасибо. –

ответ

0
@if (subPages.Count() > 0) 
    { 
     <ul> 
      @foreach (var subPage in subPages) 
      { 
       var genderQuery = Request.QueryString.Get("gender"); 

       if (subPage.Children.Count() > 0 && 
        (genderQuery == null || 
      subPage.GetPropertyValue<bool>("gender") == bool.Parse(genderQuery))) 
       { 
        <li class="child @(CurrentPage.Name == subPage.Name ? currentClass :"")"> 

         <a href="@subPage.Url">@subPage.Name </a> 
         <a href="@subPage.Parent.Parent.Url" class="@(CurrentPage.Name == subPage.Name ? currentClass : "hide")"><i class="fa fa-close"></i></a> 
        </li> 
       } 
      } 
     </ul> 
    } 
+0

Это именно то, что я искал! Благодаря Cetin –

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