You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 5.0 MVC项目如何通过复选框筛选男士商品列表

你可以按照以下步骤实现分类筛选功能:

  • 第一步:修正视图复选框的代码,补充参数传值的格式问题
    修改后的Razor代码如下:
<div class="single-widget category">
    <h3 class="title">@Model.l_ModUDF.Where(x => x.UDFType == "String").FirstOrDefault().UDFID</h3>
    <ul>
        @foreach (var item in Model.l_ModUDFItem.GroupBy(x => x.Category))
        {
            l_ModUDFItem = item.Where(x => x.Category == item.Key).First() ;
            <li>
                <input type="checkbox"
                       name="model"
                       value="@item.Key" 
                       onclick="Categories('@l_ModUDFItem.Category')"/>
                @item.Key
            </li>
        }
    </ul>
</div>

注意:这里给Categories方法的参数加了单引号,避免分类名是字符串时被识别为JS变量报错,同时补充了复选框的value值为对应分类名。

  • 第二步:根据业务场景选择筛选实现逻辑

方案1:前端本地筛选(适合商品数据量小,已经全部加载到当前页面的场景)

首先给渲染的每一个商品项添加data-category属性标注所属分类:

<!-- 商品列表渲染示例 -->
<div id="product-list">
@foreach(var product in Model.ProductList)
{
    <div class="product-item" data-category="@product.Category">
        <!-- 商品图片、名称、价格等展示内容 -->
    </div>
}
</div>

然后添加JS筛选逻辑:

// 存储当前选中的分类,需要支持多选可改为数组类型
let activeCategory = '';
function Categories(selectedCategory) {
    const checkbox = event.target;
    if(checkbox.checked) {
        activeCategory = selectedCategory;
    } else {
        activeCategory = '';
    }
    // 遍历所有商品项控制显隐
    document.querySelectorAll('.product-item').forEach(item => {
        if(!activeCategory || item.dataset.category === activeCategory) {
            item.style.display = 'block';
        } else {
            item.style.display = 'none';
        }
    })
}

方案2:后端请求筛选(适合商品数据量大,需要分页/动态拉取的场景)

通过AJAX请求后端过滤后的商品数据,局部刷新商品列表:

function Categories(selectedCategory) {
    const isChecked = event.target.checked;
    // 拼接请求参数,支持多选可拼接多个分类参数
    const requestUrl = `/Product/GetFilteredProducts?category=${isChecked ? encodeURIComponent(selectedCategory) : ''}`;
    fetch(requestUrl)
        .then(res => res.text())
        .then(filteredHtml => {
            // 替换商品列表区域的内容
            document.getElementById('product-list').innerHTML = filteredHtml;
        })
}

对应的后端Action示例:

public IActionResult GetFilteredProducts(string category)
{
    var products = _dbContext.Products.AsQueryable();
    if(!string.IsNullOrEmpty(category))
    {
        products = products.Where(p => p.Category == category);
    }
    // 返回商品列表的局部视图
    return PartialView("_ProductList", products.ToList());
}

内容的提问来源于stack exchange,提问作者H.M.Mubashir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:36:01