Search code examples
c#.netumbracoumbraco7

Bool value cannot be null


I'm working on an Umbraco 7 website where products are being filtered by a boolean.

  • True = male
  • False = women

I Request.QueryString.Get("gender") and recieve a true or false value that I parse into the subPage.GetPropertyValue<bool>("gender") which then renders out the products that is either true or false. That part works fine.

However if I do NOT have any QueryStrying.Get("gender") in the URL it returns an error that tells the Value cannot be null.

How do I prevent this from happening? I tried wrapping the var genderQuery with a @if (Request.QueryString.Get("gender") != null) but then I can't grap it from inside the foreach

My code:

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

Solution

  •  @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>
        }