ASP.NET Core 6 MVC/C#:如何根据ViewBag值修改排序箭头颜色
解决ASP.NET Core 6 MVC排序箭头颜色不生效问题
你的代码问题出在两个核心点:
- 误用赋值运算符
=替代比较运算符==,导致每次渲染都会强制修改ViewBag.CurrentSort的值,条件判断完全失效 - Razor表达式未用括号包裹,语法解析会出现歧义,无法正确识别条件逻辑
修正方案1:直接修正内联样式表达式
把赋值操作改成比较,并用括号明确包裹Razor表达式,确保语法解析正确:
<th scope="col"> Name <span style="@(ViewBag.CurrentSort == "Name_ASC" ? "color:Red" : "color:Black")" class="hqy-caret-up functionOver" onclick="SearchOrder('Name_ASC')"> </span> <span style="@(ViewBag.CurrentSort == "Name_DESC" ? "color:Red" : "color:Black")" class="hqy-caret-down functionOver" onclick="SearchOrder('Name_DESC')"> </span> </th>
修正方案2:用CSS类控制(更推荐)
这种方式避免内联样式冗余,代码更易维护:
- 先在样式表中定义基础样式和激活状态样式:
.hqy-caret-up, .hqy-caret-down { color: Black; } .active-sort { color: Red; }
- 页面中根据当前排序状态动态添加激活类:
<th scope="col"> Name <span class="hqy-caret-up functionOver @(ViewBag.CurrentSort == "Name_ASC" ? "active-sort" : "")" onclick="SearchOrder('Name_ASC')"> </span> <span class="hqy-caret-down functionOver @(ViewBag.CurrentSort == "Name_DESC" ? "active-sort" : "")" onclick="SearchOrder('Name_DESC')"> </span> </th>
内容的提问来源于stack exchange,提问作者Diego
相关产品推荐
相关产品推荐

