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

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类控制(更推荐)

这种方式避免内联样式冗余,代码更易维护:

  1. 先在样式表中定义基础样式和激活状态样式:
.hqy-caret-up, .hqy-caret-down {
    color: Black;
}
.active-sort {
    color: Red;
}
  1. 页面中根据当前排序状态动态添加激活类:
<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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:35:24