Bool 属性 显示 True & False 项目

Bool property show True & False items

我正在研究 Umbraco 7 中的 this website。我的问题是左侧的 "gender" 过滤是 bool (queryString)。此布尔值在每个产品上设置为 "Is this product for male? - True or False".

默认设置为 "All gender",但在代码中,它实际上设置为 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

我不知道如何声明"isMale"同时显示真假产品。

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

//...
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));

//...

或者使用枚举。