基于最低/最高价格的动态价格范围进行过滤

时间:2019-07-10 03:11:04

标签: asp.net asp.net-mvc razor model-view-controller

基于这些商品的最低和最高价格,我想为我的复选框过滤器创建动态价格范围。例如,如果最低价格和最高价格之间的差为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语句是否是实现此目的的最佳方法。显然,当您必须渲染所有复选框时,这在每种情况下都非常混乱。有更好的方法吗?

0 个答案:

没有答案