布尔属性显示真假项



我正在umbraco 7中的此网站上工作。我的问题是左侧的"性别"过滤,即 bool(querystring)。每个产品都设置为"是男性的产品?

  • 所有性别=无
  • 男性=&性别= 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>

如果您想查看我的整个代码,您可以在这里看到它。

我不知道如何同时宣布" 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));
//...

或使用枚举。

相关内容

  • 没有找到相关文章

最新更新