子分类商品列表问题:iPhone X跨分类显示需修正至仅iPhone分类
解决商品跨分类错误显示的问题
嘿,我来帮你搞定这个iPhone X同时出现在三星和iPhone分类里的问题~
先看你现在的代码,目前只是根据SubCategoryIsHome来决定是否渲染子分类链接,但完全没校验子分类所属的主分类,这就导致关联错误的子分类(或者对应的商品)会在多个分类下显示出来。
要解决这个问题,我们只需要在遍历子分类的时候,增加主分类的校验逻辑,确保只有属于iPhone主分类的子分类才会被展示。
修改后的代码示例
<ul class="row-list"> @foreach (var item in Model) { // 只展示需要在首页显示、且属于iPhone主分类的子分类 if (item.SubCategoryIsHome == true && item.MainCategoryName == "iPhone") { // 统一判断选中状态,避免重复代码 bool isSelected = selectedSubCategory != null && item.Name == string.Intern(selectedSubCategory.ToString()); <li> <a href="@Url.Action("SubList", "Home", new { id = item.Id })" @(isSelected ? "class='active'" : "")> @item.Name </a> </li> } } </ul>
几个关键点说明
- 这里我假设你的子分类模型(也就是
item)有一个MainCategoryName属性,用来标记它所属的主分类;如果你的系统里用的是主分类ID(比如iPhone主分类的ID是固定值2),把判断条件改成item.MainCategoryId == 2就好。 - 我还优化了选中状态的判断逻辑,不用重复写两次几乎一样的
<a>标签,让代码更简洁易维护。 - 如果想从根源解决问题,更推荐在后端获取
Model数据的时候就直接过滤掉不属于iPhone主分类的子分类,这样视图层的逻辑会更轻量干净。
内容的提问来源于stack exchange,提问作者tom clack




