Исходя из минимальной и максимальной цены этих товаров, я хотел бы создать динамические ценовые диапазоны для своих фильтров-флажков. Например, если разница между минимальной и максимальной ценой составляет 10 долларов США, я хотел бы использовать 2 фильтра диапазона («1-5 долларов США» и «5 долларов США и более»)
Я думал о том, чтобы сделать заявление о переключении, но не знаю, как впоследствии реализовать диапазоны цен в диапазонах цен для фильтров.
@{var priceDifference = @Model.MaxPrice - @Model.MinPrice; }
@switch (priceDifference)
{
case int n when (n > 0 && n < 10):
n = 2;
break;
case int n when (n < 25):
n = 3;
break;
case int n when (n < 50):
n = 4;
break;
case int n when (n > 100):
n = 5;
var priceIncrement = priceDifference / n;
<div id="priceFilter">
<label class="pOne">
<input type="checkbox" value="" min="1" max="@priceIncrement">
Under $@priceIncrement
</label>
<label>
<input type="checkbox" value="" min="@((priceIncrement))" max="@((priceIncrement) * 2)">
$@((priceIncrement)) to $@((priceIncrement) * 2)
</label>
<label>
<input type="checkbox" value="" min="@((priceIncrement) * 2)" max="@((priceIncrement) * 3)">
$@((priceIncrement) * 2) to $@((priceIncrement) * 3)
</label>
<label>
<input type="checkbox" value="" min="@((priceIncrement) * 3)" max="@((priceIncrement) * 4)">
$@((priceIncrement) * 3) to $@((priceIncrement) * 4)
</label>
<label>
<input type="checkbox" value="" min="@((priceIncrement) * 4)" max="@Model.MaxPrice">
Over $@((priceIncrement) * 4)
</label>
</div>
break;
}
Если минимальная / максимальная разница в ценах превышает 100 долларов, я бы хотел 5 фильтров диапазона. Допустим, минимальная / максимальная разница в цене составляет 150 долларов США, используя разницу в ценах, деленную на 5 диапазонов, и получаю 30 долларов США за приращения. Таким образом, диапазон будет (до 30, 31-60, 61-90, 91-120 и более 120 долларов).
Не уверен, что оператор switch будет лучшим способом реализовать это. Очевидно, что это становится очень запутанным в каждом случае, когда вам нужно рендерить все флажки. Есть ли лучший способ сделать это?