我正在umbraco 7中的此网站上工作。我的问题是左侧的"性别"过滤,即 bool
(querystring)。每个产品都设置为"是男性的产品?
- 所有性别=无
- 男性=&性别= true
- 女性=& gender = false
默认情况下,它设置为"所有性别",但是在代码中,它实际上设置为true
,如您在我的代码中所看到的。我想同时显示true
和false
产品。
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));
//...
或使用枚举。