Bool房产显示True&假物品

时间:2016-12-23 13:59:34

标签: c# .net umbraco umbraco7

我在Umbraco 7工作this website。我的问题是"性别"在左侧过滤,这是bool(queryString)。这个bool在每个产品上设置为"这个产品是男性吗? - 对错"。

  • 所有性别=无
  • 男性=& gender = true
  • 女性=& gender = false

默认情况下,它设置为"所有性别",但在代码中,它实际上设置为true,正如您在我的代码中看到的那样。我想同时展示truefalse个产品。

bool isMale = true应该类似于isMale = true && false,如果有意义的话。

<div id="categoryCollection">

@{
    bool isMale = true;
}

@if (!string.IsNullOrEmpty(selectedpriceRange) && selectedpriceRange.Contains("-"))
{
    string[] priceArray = selectedpriceRange.Split('-');
    int minPrice = 0;
    int maxPrice = 0;

    if (queryString.Get("gender") != null)
    {
        isMale = bool.Parse(queryString.Get("gender"));
    }

    if (priceArray.Count() == 2 && int.TryParse(priceArray[0], out minPrice) && int.TryParse(priceArray[1], out maxPrice))
    {
        selectedItems.AddRange(productTypes
            .Where(x => x.HasValue("price") &&
            x.GetPropertyValue<int>("price") > minPrice &&
            x.GetPropertyValue<int>("price") < maxPrice &&
            x.HasValue("gender") &&
            x.GetPropertyValue<bool>("gender") == isMale)
            .Skip((page - 1) * pageSize).Take(pageSize));

        foreach (var item in selectedItems.Skip((page - 1) * pageSize).Take(pageSize))
        {
            /* If pricerange is selected */
            @buildItemProduct(item);
        }
    }
}
else
{
    if (queryString.Get("gender") != null)
    {
        isMale = bool.Parse(queryString.Get("gender"));
    }
    selectedItems.AddRange(productTypes.Where(x => x.HasValue("gender") && x.GetPropertyValue<bool>("gender") == isMale));

    foreach (var item in selectedItems.Skip((page - 1) * pageSize).Take(pageSize))
    {
        /* If pricerange is selected */
        @buildItemProduct(item);
    }
}
</div>

如果您想看到我的整个代码,您可以看到here

我不知道如何申报&#34; isMale&#34;同时显示真假产品。

1 个答案:

答案 0 :(得分:2)

您可以使用另一个bool来保持最小变化:

//...
var bothGender = true;
if (queryString.Get("gender") != null)
{
    isMale = bool.Parse(queryString.Get("gender"));
    bothGender = false;
}

if (priceArray.Count() == 2 && int.TryParse(priceArray[0], out minPrice) && int.TryParse(priceArray[1], out maxPrice))
{
    selectedItems.AddRange(productTypes
        .Where(x => x.HasValue("price") &&
        x.GetPropertyValue<int>("price") > minPrice &&
        x.GetPropertyValue<int>("price") < maxPrice &&
        x.HasValue("gender") &&
        (bothGender || x.GetPropertyValue<bool>("gender") == isMale)) // <-- changes here
        .Skip((page - 1) * pageSize).Take(pageSize));

//...

或使用枚举。